5.If()じゃ、ダメ。
さて、「カスタマイズ」の式をif関数を使ってセルに書き込むことはできるけど、それではもちろんとんでもない長さになってしまう。ifが使えるのは、2択かせいぜい3択まで。ここは、最低6択になるのだから、ifではダメ。ではどうすれば良いか。
6.Mid()による条件分岐。
はるか昔、N88DISKBasicというのを使っていた頃・・・。長いプログラムを書く場合、メモリの関係で、できるだけ文字数を少なくしたかった。そこで多用したのが、Mid関数による条件分岐。フラッグが1なら、yを、2なら、nを、3なら、fを表示させたい場合に、
%sel = Mid("ynf",%flag,1)とやるわけである。ここも、数値をいくつかに区切って、それに対応させて★の表示非表示をさせれば良いのだ。もちろん、いくつずつに区切ったら良いのか、それは試行錯誤するしかないなぁ、と思って次の式を作った。
=((Row(E6)-6)^4+(Col(E6)-6)^4) DIV $M$1
これで、M1に、色んな数字を入れていけば・・・。で、最初の数字は・・・。
(1) できるだけ大きな数字が良い。
(2) 0は、非表示で、1は★、次の非表示は97。
ということは、当然、96ですね。
で、96を入れてみたら・・・。
なんと、★とするセルは、0,3,5,13となり、
真ん中を除いて、非表示のセルとの重複はないではないか。\(^o^)/
まだ、真ん中が、★になっているけど、これを使って式にすると、
=Mid("* * * *",((Row(F6)-6)^4+(Col(F6)-6)^4) DIV 96+1,1)
これで、中心が★になってしまうことを除けば、手裏剣が書けたのだ。
文字数は、63。あとは、中心をどうするかだけど・・・
これで、第2のハードルクリア(^^)(^^)
おお、これが仰っていた3つのハードル、その2ですか。さて最後は何でしょか?
投稿情報: くまぷー | 2007/09/30 19:19