ExcelのLET関数でズンドコキヨシ


ふと自分の記事を見返して「ズンドコキヨシ」が懐かしくなったので、先駆者がおそらく居ないことを確認した「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))