ふと自分の記事を見返して「ズンドコキヨシ」が懐かしくなったので、先駆者がおそらく居ないことを確認した「ExcelのLET関数 & RANDARRAY関数版」でワンライナー(?)実装しました。
ノンプログラマでも遊べるズンドコキヨシです。
先駆者など
ズンドコキヨシまとめ
Excel関数:MATCH関数、複数セル
前回やったズンドコキヨシ(C#/LINQ)
LET関数 & RANDARRAY関数版「ズンドコキヨシ」
解説は2つめの「解説用」に記載しました。(--は関数へのコメントには出来ませんがご容赦下さい)
必要に応じて、条件付き書式「文字列「キ・ヨ・シ」を含む」も付けて下さい。
LET関数とは
LET関数は、2020年11月に一般公開された関数です。
- 引数1に「変数名」、
- 引数2に「計算式」、
- 引数3以降の奇数番目に「変数名」、
- 引数4以降の偶数番目に「計算式」
- 最後の奇数番目に「計算式」を入れると、
最後の計算式がセルに出力されます。
これにより、今まで入れ子にしていた計算を1セルで完結させることができ、処理の軽減に繋げられます。
RANDARRAY関数とは
RANDARRAY関数([行],[列],[最小],[最大],[整数])は、
- 指定した「行」「列」の範囲に、
- 「最小」から「最大」までの数値を表示します。
- 「整数」をTRUEにすると整数で出力されます
本編
解説は2つめの「解説用」に記載しました。(--は関数へのコメントには出来ませんがご容赦下さい)
必要に応じて、条件付き書式「文字列「キ・ヨ・シ」を含む」を設定して下さい。
数式
=LET(A,RANDARRAY(20,,0,1,TRUE),B,IF(A=0,"ズン","ドコ"),C,CONCAT(B),D,IFERROR(FIND("ズンズンズンズンズンドコ",C),C),IF(ISNUMBER(D),CONCAT(LEFT(C,D+11),"キ・ヨ・シ!"),D))
解説用
=LET(
--20個(引数1は任意の数字)の乱数列を呼び出す
A,RANDARRAY(20,,0,1,TRUE),
--Aの1個ずつを判定して「ズン」「ドコ」に変換
B,IF(A=0,"ズン","ドコ"),
--Bの結果を繋げる
C,CONCAT(B),
--FINDが成功なら数字、エラーならそのまま
D,IFERROR(FIND("ズンズンズンズンズンドコ",C),C),
--Dが数字ならキ・ヨ・シを繋げる
IF(ISNUMBER(D),CONCAT(LEFT(C,D+11),"キ・ヨ・シ!"),D))
応用編
青いベンチ/サスケ
A2セルは任意のセル、またはLET関数内の変数に置き換えて下さい。
ズンドコしてますが「青いベンチ/サスケ」として機能します。
今気付きました。後でちゃんと書きます
青いベンチ/サスケ(ズンドコを抑えている方)
=LET(A,RANDARRAY(LEN(A2),,1,LEN(A2),TRUE),A_1,SORTBY(SEQUENCE(LEN(A2),,1,1),A),B,MID(A2,A_1,1),C,CONCAT(B),D,IFERROR(FIND("ズンズンズンズンズンドコ",C),C),IF(ISNUMBER(D),CONCAT(LEFT(C,D+11),"キ・ヨ・シ!"),D))
こちらは最初の変数Sに任意の文字列を設定する正式版です。
青いベンチ/サスケ(正式版)
=LET(S,"青いベンチ/サスケ",S_LEN,LEN(S),A,RANDARRAY(S_LEN,,1,S_LEN,TRUE),B,SORTBY(SEQUENCE(S_LEN,,1,1),A),C,MID(S,B,1),CONCAT(C))