Excelの計算は信用がおけるか?

 MicrosoftがExcel2007の計算ミスのバグを修正した「どうだ、エライだろう」みたいな記事があったが、そんな大げさなことより、基本的な計算の関数は、本当に正しい結果を返すようになっているのか、あるいは修正されたのか、気になった。

マイクロソフト、「Excel」の計算ミスに関するバグを修正 (CNET Japan)

 懸念は以前、以下のような話を見つけたからである。自分は別に統計の専門家でも何でもないが、多少のコンピュータでの数値計算のノウハウは知っているつもりである。


Excel は,コンピュータ・ソフトウェアの三種の神器のようになっていますが,とんでもないこともあるというお話。


 普通の人はあまり使わない関数だろうから、影響は少ないなどと考えるのは甘い。ちゃっかりと修正されているが、Excelのヘルプなどでは堂々と誤った?計算方法がそのまま示されていたりする。たとえば分散VAR関数(あるいは標準偏差のSTDEV関数でも同じこと)でも、Excel2003以降には、次のように修正しましたというくだりがある。
Excel の統計関数 VAR


要するにこれは、Excel2003以前は分散の計算では
x2)−(Σx)2
の形でやっていました、ということである。

 ところがDEVSQ関数を使うようにしました、となっている。じゃあ、DEVSQ関数とは何かというと、
Excel統計関数 DEVSQ

となっている。つまり、分散VARの計算をやっと
Σ(x−<x>)2
の形で計算するように改めました、ということである。


 Excel2003より前は、平気で大きい2乗の数同士の差を計算していたことになる。これは数値のバラツキの大きいデータの数が多くなるほど、どんどん誤差が大きくなる方法であり、数値計算ではやっちゃいけませんという典型例である。統計の専門家ならずとも、おそらく多くのユーザに指摘を受けたであろうことが、やっとExcel2003で修正されましたということなのだろう。けれでも修正しましたとは言わずに「統計関数を強化しました」と言い張るのには、大Microsoftともあろう者がなぜ?とでも言いたくなる。バグ修正をサービスパックという感覚と同じか。ちなみに自分はまだExcel2002(Office XP)も使っていたりするのである。


 けれども専門家に指摘されている上記のような話は、Excel2007ではクリアされているのだろうか?数値計算の落とし穴は多そうである。これまでの経緯を見ていると、Excelはただの表を作るツール(レイアウトをするツール?)なのであって、シリアスな計算の結果は信じちゃいけません、ということなのかと思ってしまう。


 さらに言えば、マクロのVBAで提供される関数もワークシートの関数とは全くの別物である。同じ機能の関数でも関数の名前からして異なっている。おそらく単体のVisual Basicの方で開発された関数をそのまま転用しているからであろうが、こちらも同様に信用がおけないかもしれない。

 ExcelMicrosoftの中でも数少ない?評価できるソフトウェアではあるが、それでもあまり細かい計算はするな、というのは暗黙の常識なのだろうか?