LoginSignup
2
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-31

ふと自分の記事を見返して「ズンドコキヨシ」が懐かしくなったので、先駆者がおそらく居ないことを確認した「ExcelのLET関数 & RANDARRAY関数版」でワンライナー(?)実装しました。
ノンプログラマでも遊べるズンドコキヨシです。

先駆者など

ズンドコキヨシまとめ

Excel関数:MATCH関数、複数セル

前回やったズンドコキヨシ(C#/LINQ)

LET関数 & RANDARRAY関数版「ズンドコキヨシ」

解説は2つめの「解説用」に記載しました。(--は関数へのコメントには出来ませんがご容赦下さい)
必要に応じて、条件付き書式「文字列「キ・ヨ・シ」を含む」も付けて下さい。

image.png

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))
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0