さて、くまぷーさんの解答だが、
Shift-F2で1文字ずつ現れてくるのも面白いけど、
1度に表示させることができたら、それはそれで面白そう。
三四郎では(もちろんExcelでも)反復回数を指定できるから、
反復回数を複数回にするとできるのではないか、
ということで、「きんぐぎどら」は6文字なので、
反復回数を6回にして、やってみた。
すると・・・「らどぎぐんき」にならずに、
「きききききき」になってしまった・・・(^^;)(^^;)
要するに、反復計算では、1度、全部のセルを計算した後、
また最初のセルから2度目の計算をする、
というのではないらしい。このケースでは、どうみても、
A3を6回反復して計算し、その後B1の再計算にかかるらしい。
どうもこの辺が理解できなくて、
悪児は循環参照は苦手(というより非論理的で嫌い?)なのだが、
とすれば、B1だけで済ませてしまえばできるのではないか、
と考えて、B1の式をもう一度見てみた。
A3を参照しているのは、元文字列の切り取り始点を指定するとき。
その数字は、今までに切り取った回数+1となっている。
だから、それを引いたあとで余計な+1分を足し直しているのだが、
それなら最初から、切り取った回数分を引いてやれば良い。
そして、切り取った回数は、そのまま、B1セルに入力されている
文字数分だから、-A3+1を-Len(B1)に替えてやれば良い。
ということで、B1の数式を
=If(A2=0,"",If(Len(B1)<Len(A1),B1 & Mid(A1,Len(A1)-Len(B1),1),B1))
に差し替え、A3を空白にし、反復回数を10回にして、
A2に一旦0を入れて、初期化してから、1を入れたら、
Shift-F2を押すまでもなく、「らどぎぐんき」が表示された。\(^o^)/
これなら、99文字まで(三四郎の反復回数の最大値)
一発&一セル変換ですね。(^^)(^^)
>一発&一セル変換ですね。(^^)(^^)
あ、なるほど・・・。
ここまで研究するとはさすがですねぇ~。
>A3を6回反復して計算し、その後B1の再計算にかかる
これが仕様だと思ってあきらめていました(^^ゞ
投稿情報: くまぷー | 2007/04/24 05:56
偶然できてしまいました。
A2の数式
=If(Len(A2)>Len($A$1),"",Mid($A$1,Len(A2)+1,1) & A2)
A1に文字列をいれる
A1の消去で初期化
反復回数を100などにする
解説なんかできるわけもなく… (- -;;;;)
投稿情報: きっちー | 2007/04/24 19:12
きっちーさん、こんばんは。
をを、できますね。\(^o^)/
面白い&素晴らしい (^_^)(^_^)/~
ぜひ、出題元の、くまぷーさんのところにも、
コメントして下さい。(^^)ゞ
http://kumapooh.justblog.jp/blog/2007/04/7_525a_1.html
投稿情報: 悪児 | 2007/04/24 19:41