if文のnestは何重までOK?


結果は、Excel<クラリスワークス<Numbers

ひょんなことから、職場で話題になりました。
ただの暇つぶしで、ソフトの優劣を調べるものではありません!(念のため)

まず手近なExcelからチェック。職場のWindowsXp上のMS-Excel2002

適当なセルに、左隣のセルをチェックする関数を入れます。
C2に関数を入れ、B2を参照させます。

・ =if(B2=1,B2,)
・ B2が1ならば1を返し、それ以外ならば?を返す(Excelの場合は0)だけの単純な関数です。
・ この文字列全体を選択してコピー。最後のかっこの左にカーソルを合わせてペーストすると、
・ =if(B2=1,B2,=if(B2=1,B2,))  となる。
・ 今ペーストした比較の数値1を2に変えます。
・ =if(B2=1,B2,=if(B2=2,B2,))
・ これで2重のnestが完成します。B2に数値を入れてみると無事に機能(1を入れると1を返し2を入れると2を返す。それ以外は0を返す)します。
・ 以下同様にやっていくと、何と9回目にエラーが生じました。最も内側のif文を削除するときちんと動作しますので、nestの制限が8であると解釈できます(ホントか?)

次は同じマシンにインストールしてあるクラリスワークス。

同じことをやってみると、何と1回目からエラー! ムム、

調べるとどうやらif文では第2引数を省略できないらしい。そこで、
=if(B2=1,B2,"") のように変更して、nestを続けてみると

やった!11回目までセーフ、12回目にエラーとなりました。

帰宅後、家のMacintosh版のExcel2004で実験してみたところ、Windows版と同じ結果が出ました。

調子に乗って、Appleの新顔Numbersはどうかと実験。
18回目まできちんと動作することを確認しました。圧勝(!?)
ただ、18重ともなると判断結果が出るまでに「どっこいしょ」と言う感じで時間がかかります。

聞くところによると、FileMakerの場合は無制限だそうです。

Posted: 2007年09月27日 (木) at 18:53    |   |