最近、会社でExcelで30万ぐらいの数のデータの価格を自動計算するシステムを作ろうとしています。元々外注しようと思っていたのですが、調べてみたらあまりにも例外処理が多すぎて、それを外部の業者にメールで説明する方が大変なんで、仕方なくこちらでやっています。それでつくづく思うのが、Excelは複雑な論理を扱うのにはまったく向いていない、ということです。
まず、マクロで書けばいいのかもしれませんが、セルに数式を書くやり方だと、if関数を重ねていくと、3重くらいまでは何とかフォローできてもそれ以上だとほとんどデバッグ不能になります。通常のプログラミング言語ならインデントして書くので、論理ブロックの固まりはすぐ判断出来ますが、Excelだと行内にひたすら足していくだけなので、とても大変です。
また、Excelにはcase文を書くことが出来ないので、2つの条件の組み合わせの4通りの処理が、if関数の連続でしか書けません。
更には表引きで、良く使うvlookupだけでは足らないので、indexとmatch関数を組み合わせた2次元の表引きを多用していますが、これもパラメーターがさらに増えると3次元とか4次元の表があるかというと無く、無理矢理パラメーター同士をくっつけて展開して2次元表に落とし込むしかなくて、こちらもかなり大変です。
更に困ったちゃんが、もう一つ。これだけバージョンを重ねながら、何で未だに正規表現の検索や置換がサポートされないんでしょうか。私はいつも、一旦データをテキストエディターにコピペで移し、そこで正規表現での置換をやってExcelにまた戻しています。まあVBAには正規表現の関数があるようですが。私はExcelマクロは書こうと思ったら書けますが、大体においてコスト対効果で見合わないのと、後でメンテが大変なんで使いません。使うのはキーボードマクロだけです。