よいExcel計算式
思いついたので書きますね。
よいExcel計算式って何でしょう。
最小文字数で構成されるちゃんと動く計算式?
一目で見てわかる計算式?
自分の考えを主張できる計算式?
あなたはどれだと思いますか?
では、どれかを選んだとして、明日使うExcelで入れる計算式もそうありますか?
それとも使用用途によって変えますか?
これも30年Excelを使ってきた私が落ちた底なし沼です。
2つ例を出します。
1つめは、買い物したときの消費税額計算。
その商品の単価と個数をかけて、さらに消費税率をかけます。
これをそのまま計算式にすると
=(単価*数量)*消費税率
でも数学では
=単価*数量*消費税率
でも成り立ちます。さらに文字数からいえばよりシンプルです。
=((単価*数量)*消費税率)
これだと逆に文字数は増えますが、これはThe消費税額と、定義しているようにも思います。
2つめは、IF関数です。
もしも、A1が1の場合は、A、2の場合はB、3の場合はCにするとします。
=IF(A1=1.”A”,A1=2,”B”,A1=3,”C”)
こんな計算式になるでしょう。この計算式にはIF関数の構造的な空白から、1~3以外の整数を入れえるとFALSEになります。今回、それは仕方ないことにします。
これをわかりやすくするにはIFS関数などがありますが。最もシンプルなのはIF関数から離れCHOOSE関数にすることではないでしょうか。A1の値だけをみて、その順番で指定することができます。
=CHOOSE(A1,”A”,”B”,”C”)
これで単純化できます。しかし、今回はたまたま1~3の順番になっていたのでCHOOSE関数が使えました。もしその法則が崩れたら使えません。将来にわたりその法則が崩れないことが保証されていなければいけません。これはどんな計算式でも同じことが言えますが、CHOOSE関数の場合はもしそのようなことが起きたときは、関数自体を別にするというコストが発生します。
そしてこの計算は次のような仕組みにもできます。
=MID(“ABC”,A1,1)
もっともシンプルです。しかし、もはや分岐ではありません。文字列操作です。やっていることはわかります。でも目的とは違います。それでもいいのかどうかという判断が必要ですね。
この2つの例で、僕が言いたいのは、正直、どれでもいいと思うのです。
どれかをベストプラクティスとして統制すれば、ある点ではシンプルになるが意味が変わる、ある点では複雑になるが意味がわかる。というメリットデメリットがどの時点でも発生するのです。
そこでどれを判断軸とするか、それは、説明性だと思っています。
なんとなく選んだ、ではなく、この計算式はこういう理由で括弧がついた、こういう理由でこの関数を作った。それが誰かに聞かれた時に答えられるかなのです。
常に計算式を作るときはその計算式を選んだ責任がつきまといますが、
説明ができるとすればその責任を棚卸できるのです。
ただそれだけのことなので、どの計算式で悩む、ということは本来いらなくて、悩みを排除するための統制もまた不要だと思います。
よい計算式は、自分の責任を分散できる、そういったものなのかもしれません。
