くまぷーさんが、悪児の解答を解説してくれている。(^^)(^^) 。
http://kumapooh.justblog.jp/blog/2007/04/9_73fe.html
お礼に、こちらでも、くまぷーさんの解答の解説をしよう。
くまぷーさんの解答で、数式の入っているのは、次の2セルだ。
ひとつはA3で、式(以下式A)は、
=If(A2=0,0,A3+1)
もうひとつは、B1で、式(以下式B)は、
=If(A2=0,"",If(Len(B1)<Len(A1),B1 & Mid(A1,Len(A1)-A3+1,1),B1))
これを見て、「あれ?」と思った方は、表計算をよく知っている方だ。
式Aは、A3セルに入っているのに、式の中でA3セルを参照している。
つまり、
A3=A3+1
ということで、A3セルの値は、計算をし直す度に1ずつ増えてしまうことになる。
これは、普通の使用法では、避けるべきことなのだが、
くまぷーさんは、これを上手く利用して、
マクロを使わずに、シートを動かすのがお得意なのだ。
さて、式Aの場合、単に数を増やすだけではなく、
A3の値を初期化する(0にする)ための仕掛けもされている。
それが、If関数だ。
A2セルが、ゼロなら、A3セルにゼロを代入し、
ゼロでなければ、A3セルの値を計算し直す度に1増加させる。
これで、最初に、A2にゼロを入力して初期化してから
A2に1を入力すると、A3が1になり、以下
計算し直すたびにA3の値が1ずつ増加することになる。
なお、計算をし直せ(「再計算」という)という命令は、
三四郎の場合、shift-F2で行われる。(続く)
今日は秩父に芝桜を見に行って
今、帰ってきました。休日と言うこともあり
人!人!人!・・・芝桜はきれいでしたが
疲れました(^。^)
循環参照の解説、有り難うございます。
この後の展開を楽しみにしています。(^。^)
投稿情報: くまぷー | 2007/04/22 21:04