エクセルの処理は、VBAだけに頼らず関数の式も使おう

IF関数がたくさん入った長い計算式は解読も修正もできない

職場でエクセル表で苦戦している人がいました。
「これを修正するのはたいへんだ。ここはあべっかんに頼もうか」
ということで私がそのエクセル表を見ることになりました。

ある価格を表示するセルに長い計算式が入っていました。IFがいっぱいあって条件によって異なる値を入れたいようです。パソコンにつないだ大きめなモニターでも表示しきれないくらいの長さ。50cmくらいあったでしょうか。

IF分がたくさんあります。もし4月だったら△△して、それ以外でもし5月だったら▽▽して、というように9月までの条件が記載されています。

こういった長い関数になると解読するのも修正するのも大変です。
長い関数をやめるには、VBAでプログラムを作ってしまうことが有効です。VBAのプログラムならば1行づつ順に処理をするので解読しやすい。コメントを追記することもできます。

VBAのプログラムを作ろうかと思ったけれど

さて、もとの関数をよく見てみると、IFを4月から9月まで月の数だけ繰り返しています。

繰り返さなくても、月の数を6で割った余りを出して余りの数から計算すればいいんじゃね?

と私は思い、割った余りを出す関数 MOD を使って書き換えてみるました。

すると、もとの数式の5分の1くらいの長さになりました。
「なら、これでいいや」
VBAでプログラムを作るのはやめました。

ただし短くなれば関数の式でもいい、というわけではありません。短くても解読ができないような式だったらVBAの処理に変えるべきです。

今回は、使う人たちがIT系の人なので、解読はできるだろうということもあって関数の式のままにしたのです。

関数派もVBA派も、固執せずに両方使ってみよう

エクセルのヘビーユーザーは、関数派とVBA派に分かれています。

関数派はVBAを知ろうとせず、難しい計算も複雑な計算式を作って処理を実現してしまいます。

一方VBA派は、長い関数式が嫌いです。VLOOKUPやピボットテーブルを多用した難しい式を書くくらいなら、VBAで自分でプログラムを作るほうが楽だし好きなのです。私はVBA派です。

けれども、仕事に適した処理を行うには、関数もVBAも適度に取り入れるほうがよいのです。その処理の内容や使われ方や使う人などの環境によって、適したエクセルを作っていきましょう。私はVBA派ではありますが、関数で簡単にできないかも考えるようにしています。

関数もVBAも、ある程度はどちらも使えるようにしておきたいですね。


エクセルプログラミング個人レッスン at 横浜

カフェで2時間でVBAの入門から教えます。
受講料:6,400円
詳細と申し込みはストアカのページから