【みんはや・デレステ】逆再生クイズde〇ンデレラのつくりかた(CONCAT関数、SEQUENCE関数の活用法)
最近はすっかり「みんはや」の住民になっており、クイズdeシンデレラのレートが低くなっておりますとよさんです。(筐体はとりました)
では、「みんはや」で何をやっているかと言えば、概ねクイズdeシンデレラみたいなことをやってます。
先日、録画したものがあるので良ければご覧ください。
こちら「逆再生クイズde〇ンデレラ」と言いまして、クイズdeシンデレラに出題される問題を、すべて逆から再生したものを全765問でお送りしております。興味ある方はこちらにID晒しておきますのでよろしくおねがいします。(リアルクイズの正答率は低い)
「逆再生クイズde〇ンデレラ」について、本家の方には全部で1708問の出題が確認されていますが、イントロクイズやビジュアルクイズは実施できないので除外、その他カンタンな短文クイズ(読み仮名やタイプ)はほぼ出題していません。
ではここで一句…ではなく例題を。
?は称名のトッニユるならかめやあ口浜、美珠山脇、鈴歌寺明道
答えはみなさんご存知「可惜夜月(あたらよづき)」。回答時に逆から答える必要はございません。
これを作るとき、手書きで問題文をすべて逆からスマホで書き込んだ…なんて訳はなく、エクセルを使用して作成しました。その計算式がコチラ。
=CONCAT(MID(XXX,SEQUENCE(1,LEN(XXX),LEN(XXX),-1),1))
※「XXX」には逆再生したい問題文のセルの住所が入ります。
作成の際はこちらのブログを参考にしましたが、頭が完全に文系な筆者は、ぶっちゃけ自分でもどういう動きがあってこうなったか頭で理解できていませんでした(
上のブログによれば、「SEQUENCE関数を利用し、一旦後ろから1文字ずつバラバラにしてCONCAT関数で結合する」とのことでしたが、わかるようでワカラナイ…。
いま順を追って手を動かしてようやく理解できました。この後長いので、追記で結論を先にどういう作業を行ったか漏れなく書くと「SEQUENCE関数とLEN関数・MID関数を組み合わせて、クイズの問題文を1文字ずつ、後ろから順番に抽出して、その抽出結果をCONCAT関数で結合すると、問題文を逆から順に表示できる」ということです。。
これでも良く分からなかった方は、この後の文章と図をご覧いただけると分かると思います(どこ需要)
エクセル詳しい方にとっては、ここで本記事は終了です(
先に言っておきますと、筆者のPCにはMicrosoft Officeが入っておらず、Kingsoftのやっすいスプレッドシートを使用しており、そちらには実装されていない関数が含まれていました。なので、オンラインでなら無料で使えるMS Officeで上記関数を実行して、手元のエクセルとGoogleスプレッドシートに貼り付けたのでした。無料でエクセル使えて感謝ですわ。
①SEQUENCE(シーケンス)関数
こちらの関数は、Office2016から実装されたようで、ざっくり言えば連続した数字の一覧を作成する関数です。
下図のとおり、関数を入力すると(行, [列], [開始], [目盛り]) と案内が出てきましたので、とりあえず3,3,0,4と入力しました(なんでや!)
すると、このように数字が出てきました。
もうお分かりの方も多いでしょうが全て言語化します。
① 行 → 表示したい一覧の行数を指定します。(ここでは3行)
② [列] → 表示したい一覧の列数を指定します。(ここでは3列)
③ [開始] → 1番目に表示する数値を指定します。(ここでは0)
④ [目盛り] → 1つ進むごとにいくつ数字を増やす(減らす)か決定します。この数値をマイナスにすれば、だんだん減っていく表もできます。(ここでは4ずつ増える。本番ではマイナスを使います)
実際は3×3の表なんて作らず、=SEQUENCE(100,1,1,1)とか入力して、No.1~100までの表を作ったりするんかね。
さて次は、この数字を表示させる機能を、LEN関数と組み合わせます。
②LEN関数
これはとても簡単ですが、指定したセルの文字数を表示させる関数です。
」浜口あやめ「の読み仮名は? というセルにLEN関数を当てると、「14」となりました。
(かぎかっこは反対向きにしておかないと、逆再生したときに反対向きになるので逆向きにします)
③MID関数
こちらは、指定したセルの文字情報を、任意の位置から任意の文字数だけ転記するという関数です。
この関数のきょうだい?として、最初から任意の文字数を表示するLEFT関数と、最後から任意の文字数を表示するRIGHT関数があります。
ここでは、"」浜口あやめ「"以降の文章だけ取り出しています。
[文字列] → 表示させたいセルを指定(ここでは"」浜口あやめ「の読み仮名は?"
[開始位置]→何文字目から表示させたいか指定(ここではLEN関数で"」浜口あやめ「"を指定し、名前の次の文字から始めたいので+1を入れてます。もちろん文字数を数えて「8」と入れても成立しますが、それだと他の字数の人間に対応できなくなります)
[文字数]→以降の何文字を表示させたいか指定。残り9文字なので、9と入れましたが、9999とか入れておけば「残り全部」みたいにできます。
では、まずはLEN関数とSEQUENCE関数を組み合わせてみましょう。
④SEQUENCE関数×LEN関数=数字を逆順で並べる
まずはSEQUENCE関数を入れて、まずは「1」を入れます。最初に出した例のように、縦長にはせず一行だけにします。
次の列と開始ですが、どちらもLEN関数で、『」浜口あやめ「の読み仮名は?』のセルを指定します。つまり、横には14列で表示して、14からカウント開始ということです。
最後に[目盛り]はマイナス1としました。計算式はこうなります。
=SEQUENCE(1,LEN(B12),LEN(B12),-1)
そうすると、左から順に14,13,12,11…と数字が表示されました。これで数字の逆再生ができました。
⑤SEQUENCE関数×LEN関数×MID関数=逆再生
さきほど作った数字を文字にするために、MID関数を付け足します。
=MID(B12,SEQUENCE(1,LEN(B12),LEN(B12),-1),1)
MIDの[開始位置]にSEQUENCE関数を置いて、文字数の部分には1を入れます。
すると、さきほどは数字だった部分が文字に変わりました。14文字目(?)、13文字目(は)、12文字目(名)…と、逆再生になりました。
ゴールは近づいてます。
余談で、こっちのほうが需要ある気もしますが(
逆順ではなく、前から順にバラバラにさせたい場合は、以下のように、
[開始位置]と[目盛り]を「1」にすれば、問題文を1文字ずつ分解できます。
=MID(B12,SEQUENCE(1,LEN(B12),1,1),1)
⑥CONCAT関数=バラバラになった文字列をひっつける
これで問題文が無事逆再生になりました。しかし今のままじゃ1セルにつき1文字と使い勝手が悪いので、ひとつのセルにまとめてしまいましょう。
CONCAT関数は、concatenate(文字列を連結する)という意味の通り、指定のセルにある文字をひっつけることができる関数です。「A2:A10」のようにドラッグ&ドロップで範囲指定すれば、ラクラク複数の文字情報をひっつけられます。
計算式は、さっきの計算式のアタマに頭にCONCATをつけて、カッコで閉じるだけです。
=CONCAT(MID(B12,SEQUENCE(1,LEN(B12),LEN(B12),-1),1))
すると、『?は名仮み読の「めやあ口浜」』と一つのセルに表示されました。これで逆再生問題文の完成です。
これはExcel2016から実装されていて、それ以前に実装されていたCONCATENATE関数がありますが、こちらは(つなげたいセルA, つなげたいセルB, …)というふうにカンマでつなぐ必要があり、ドラッグアンドドロップで作れません。
試しにCONCATENATE関数をいれてもバラバラなままでした。
謎のエクセル講座は以上になります。
しごとでエクセルに関数混ぜ込んだものを渡すと、普通の文字列になって返ってくることもありますが、計算でサボれる部分があるなら迷わずサボっていきたい。
逆再生問題文の他にもいろいろ作れたらいいなと思って、クイズdeシンデレラの問題文をスプレッドシート上で整理しました。逆再生の問題文はすべて格納済です。
時間があればデータベースも作ろうかと思いはしたものの作業は進まず…(Accessなんて当然持ってない、OpenOfficeでできる可能性はある)
わかる人だったらこんなに文字数使わなくてもわかるんだろうけど、自分はどっかしらの解説が飛んでいると頭での理解が追いつかず、とりあえずコピペしときゃなんとかなるやろって感じになってしまいます。賢くなりたいから豆乳を飲もう(
その他には、ノムリッシュ翻訳はもちろん、アナグラムとか伏せ字とか、新しい変わり種クイズdeシンデレラを生み出していきたいと思います。
あと、本家の方も対戦よろしくおねがいします!(投票キャンペーン中なのに順位が…)
この記事が気に入ったらサポートをしてみませんか?