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
|
|