【GAS不要!?】チェックボックスでビンゴゲームをつくる -1
2022年最後の記事です。
Googleスプレッドシートの チェックボックス 関連ネタ をもう少しやります。
間に BYROWのメガシンカや和暦変換の記事を挟んだんで、だいぶ間が空いてしまいましたが、前のチェックボックス記事の続きです。
GASなしで実現できる チェックボックス小ネタを幾つか紹介しましたが、最後にチラッと 乱数の固定を応用することで「GASなしで ビンゴゲームが作れる!?」という話に触れました。
今回はこの GASなしで Googleスプレッドシートでビンゴゲームを作る方法を解説していきましょう。もちろんチェックボックスを活用します。
同シリーズ前回の記事
Googleスプレッドシートで作る ビンゴゲームの流れ
前提条件と完成形のイメージ
GASやプログラミングは一切なしで作るので、凝った演出・映え的なカスタマイズは無理(もしくは割愛)と思ってください。ビンゴの基本部分には対応しています。
以下のようなビンゴゲームを想定しています。
リーチ!や ビンゴ!といった宣言 は数式で拾うことも出来そうですが、今回はその要素は割愛して ユーザーからの申告制としましょう。
ビジュアル(映え)に関しても、もうちょい凝ることも出来ますが、これも本題から外れるので見栄えにはあまり手を加えていません。ご自由にどうぞです。
ユーザーは4名としてますが、単純にビンゴカード シートのコピーで増やせます。ただビンゴシートを増やすごとに、計算処理・条件付き書式の処理が増えて 動きが重くなるんで注意。
もちろん ビンゴシートを紙に印刷(もしくは市販のビンゴカードを利用)してビンゴマシンだけの利用とすれば、大人数で遊ぶことも可能です。
ビンゴカードの 数字を 25~75の可変にしたのは、人数やゲーム時間に応じて調整しやすくする為です。
1~75までの24個のランダムな数字(5x5 の真ん中のFREEを 1つ除くので 25-1 )とすれば、なかなかビンゴにならないので大人数で時間長めに盛り上がりたい時に使えますし、短時間でサクっとやりたい場合は 上限数値を 25とか35 に指定すれば良いですね。
完成形の イメージはできたでしょうか?
作成の手順
以下の流れでやっていきましょう。
プログラミングは不要ですが、それなりに工数はかかります。
スプレッドシートの設定で反復計算を オンにする
ビンゴの大枠を作る
ビンゴカードを作成する(数式)
ビンゴカードを作成する(条件付き書式)
ビンゴマシンを作成する(数式)
ビンゴマシンを作成する(条件付き書式)
完成、テスト
1.スプレッドシートの設定で反復計算を オンにする
これはチェックボックス番外編の内容とまったく同じなので、そちらの記事を参考に設定してください。
ちなみに「反復計算」の設定は、スプレッドシートのコピーを作成した場合も引き継がれます。つまりコピーしたスプレッドシートも反復計算がONになっている状態です。
影響はないと思いますが、一応注意しておきましょう。
2.ビンゴの大枠を作る
まずは大枠を作っていきましょう。シートを1枚追加して、
このようにシート名を変更。ビンゴカードのユーザー用シートは4つ作りますが、完成したシートをコピーした方が楽なので それは最後の作業です。
ビンゴマシンシートの大枠を作成
さすがに、こういうのは動画でやった方が伝わりやすい気がしますね。とりあえず ビンゴマシンシートは 上記のように設定します。
まだ数式や条件付き書式は入れなくてOK。
色、セルのサイズ、文字サイズ、フォントは 好みで 調整してください。
ナンバーの最大値 を入れる T1セル は、25~75 で可変にしたいので、10刻みの プルダウンにしておきましょう。
(余談)プルダウンの設定がサイドバーになった
T6 を選択して メニューから データ > データの入力規制 と選び、「プルダウン」を選択。
と数値を入れてエンターを繰り返し 選択肢を作成。
さらに 詳細オプションを開き、表示スタイルを 矢印 としてから 完了。
ちなみに、直近 2022年12月 の プルダウンに関するアップデートで、プルダウンの設定がダイアログから サイドバーに変更になりました。
さらにプルダウンのスタイルのデフォルトが チップ表示になったんで、旧来型のプルダウンにしたい場合は 表示スタイル 矢印とする必要があります。うーん、わかりづらい。
プルダウンの色付けは容易に出来るけど、今のところメリットをあまり感じないアップデートだな。。
このT6セルと連動したい 2か所の設定をしましょう。
ビンゴの際、今が何回目の抽選(ガラガラ)かわかるように、P列のチェックボックスの左隣(O列)に T6と連動する 連番が入るようにしましょう。
O3セルに以下の式をいれます。
これによって1から T6で 設定した数値までの連番が 縦並びで表示されます。
同じく 今まで出た目が色付けされるゾーン も T6 に連動して数字を表示さたいので、D3セルに以下の式を入れます。
SEQUENCEで 10行 8列 に1~80までの数字を生成し、それをIF でT6より大きい場合は空白にする としています。
以下のように T6 のプルダウンと連動するか確認しておきましょう。
これで ビンゴマシンシートの大枠は 準備OK。
ビンゴカードシートの大枠を作成
次にビンゴカードシート の大枠を作っていきます。
こっちは非常にシンプルで、方眼紙のように 行・列が 見た目同じくらいのサイズになるように調整して E3:I7 を外枠で囲い ビンゴカードとします。最初から穴があく 中央の Free マス G5は最初から色付けしておきましょう。「明るい黄3」としました。
行・列を同じピクセル値にすると、見た目的にやや縦長になるので 行を 列の9割くらいのピクセル値にするといい感じです。
ユーザーの名前入力用に F1:I1をセル統合、書式中央寄せにして 薄く色付け して下線を引いておく。
ビンゴの出た目が ユーザーのシート側でも見れるように、B3:C4をセル結合し
と式を入れる。
その他の見栄えは画像を参考にしていただき、お好みで調整を。不要な行、列は削除して 領域を小さくしておくと良いです。
これでビンゴカードの大枠も完成。
こっちは簡単ですね。このまま ビンゴカードを先に作っていきます。
3. ビンゴカードを作成する(数式)
いよいよビンゴカードの部分の数式を組んでいきましょう。
ここは QAでいってみましょう。
自信のある人は 数式作成にチャレンジしてみてください。
Q. ビンゴカードを 1行数式と反復計算で作るには?
条件は以下の通りです。
以下のような表示・動き になればOK
どうでしょう、式を作れそうでしょうか?
↓
ここから回答
↓
A. ビンゴカードを 1行数式と反復計算で作る
ちょっとハードルが高いので、まず 条件を緩和して簡単な式を作ってみましょう。
まずは簡単な条件で ビンゴカードを作ってみる
取り消し線でいくつかの条件を一旦除外しました。
これなら少し難易度が下がったんじゃないでしょうか?
この要件は、1~25の数字を 5x5 のマスに ランダムに入れれば良いってことです。
「ランダム」ということは、乱数を使いそうだってのはわかりますよね?
でも 上限、下限を設定して ランダムな整数を返す RANDBETWEEN関数を Arrayformula と組み合わせて
こんな式を E3に入れてみても・・・
ランダムではありますが、全てのマスに同じ数が入っちゃいます。
同じく RANDARRAY という 乱数配列を返す関数があるので
こうしたところで、
ただの乱数(0から1までの間の小数)が 5x5マスに入るだけで、1~25の整数という条件にはマッチしません。
ではどうするか?
これは、1~25までの数値を 25個の 乱数を キーに並べ替えをして、それを 5列折り返しにする と考えれば良いです。
ステップを踏んで作ると以下の流れになります。
① の1~25の縦並びは SEQUENCE(25)、25行1列の乱数配列は RANDARRAY(25) とするのは、わかりますね。
※列数は省略で1という扱い
②は並び替えなので SORT関数の出番です。
画像は一度出力して範囲を指定してますが、
①の式を そのまま SORT関数に使うと
このようになります。昇順、降順は気にしなくてよいので、とりあえず true でよいでしょう。
③はちょっと難しいです。
この 1~25の数字を ランダムに並び替えた 1列 の配列を 5x5 (折り返し)にするには、Excelであれば WRAPROWS 関数 の出番ですね。
でも 残念ながら Googleスプレッドシートには これに該当する関数がないので、複数の関数を組み合わせて自作するしかありません。
といっても、この方法は 土日更新の現在進行中の「Excel 14の新関数」シリーズで紹介しています。
Arrayformula + SEQUENCE + XLOOKUP で対応できますね。
①の式をそのまま使って式をつくると
こうなります。
これが 25までの数値 を 5x5 にランダムに 表示する 簡易版ビンゴカード式です。
可変する 上限への対応を考える
先ほど除外した条件を1つ盛り込みましょう。
5x5のマスにちょうど収まる 25ではなく、1~ 35、または45と 最大75までの可変数字を上限とした場合はどうなるでしょうか?
実は、これは気にする必要はないんです。
Arrayformula + SEQUENCE +XLOOKUP の式(最後の 5x5 の折り返し処理)で 並び替えたランダムな縦1列の数値配列の 上から25番目 までが使われるってだけなんで、35でも45でも75でも 影響はありません。
先ほど作成した式の 25 としていた箇所を ビンゴマシン シートの T6参照に変更するだけで OK
ちょっと煩雑なんで、この辺りからLAMBDA化して(ラムって)いきましょう。
ビンゴカード中央を Freeの文字にする
続いて
この条件に対応させましょう。
これも難しいことは無くて、特にこの処理に関しては ExcelでWRAPROWS関数を使う折り返し処理に慣れていると、気づきにくい部分かもしれません。
今回の 折り返し処理は、XLOOKUPの 第1引数(検索値)を SEQUENCE(5,5)で生成(ビンゴカードのマスに連番を振るイメージ)し、 並び替えした 1~最大値 を 順番に 1の箇所に1番目、2の箇所に 2番目 と入れていく動きです。
※詳しくは 過去記事参照
つまり 画像のように 中央の黄色箇所(Freeを入れたいセル)の番号 は 13 なんで 並び替えた データの13番目を参照してくるわけです。
それなら、SEQUENCE(5,5)が 13の時だけ Freeを入れるように IFで分岐させれば良いってなりますね。
チェックボックスONで ランダム表示をロックする
ランダム表示のロックということで、やっと チェックボックスの出番です。ようやく前回の記事の続きって感じになってきました。
これは、まんま 前回のチェックボックス記事の乱数固定の応用です。
違うのは、シートが別って点とランダムなのが 配列というだけですが、これも普通に記述すれば問題ないです。
ちょっとカッコ悪いというか、 ヘンダーソン先生的に言うなら「ノットエレガント」ですね。
LAMBDAの中に入れ込んじゃいましょう。
ビンゴカード 数式 完成版
なかなかの難易度でしたが、とりあえず ビンゴカードの数式が完成しました~。
4. ビンゴカードを作成する(条件付き書式)
数式に続いて、ビンゴカードの条件付き書式による色付けを設定しましょう。
今出た目を 色付け 強調表示する
まず ビンゴで今出た目 のマスを 目立たせる為に
とする条件付き書式を設定しましょう。
これは 簡単ですね。
ビンゴの出た目は ビンゴマシンシートを参照して B3セルに表示させるように大枠を組んだんで、条件付き書式・カスタム数式で 範囲の開始セル(左上)の式を作成すればよいです。
これでOKです。
既に出た数字を 色付けする
続いて 既に ビンゴで出た目 のマスが わかるようにする為に
とする条件付き書式を設定しましょう。
こちらは 別シートの ビンゴマシン シート のQ3:Q77 を参照し、ビンゴシートの数字が Q3:Q77 に存在する場合は 書式を適用する という設定にします。
Googleスプレッドシートの条件付き書式は、他ののシートのセルを条件に使う場合は ちょっと特殊で、 INDIRECT関数を使う必要があります。
これも過去のカレンダー番外編で触れてます。
重複チェックはCOUNTIFを使えばよいですね。
通常なら以下のカスタム数式を条件としたいところですが、
今回はちょっと事情がありまして、
このようにしておいてください。
なんで COUNTIFSにして P列の チェックボックスも条件に加えているか? これは 後で説明します。
ビンゴマシンカードの Q列に適当に手入力、P列のチェックボックスにチェックを入れてみてテストしましょう。
きちんと色付けが反映されていればOK。
これで ビンゴカードは 完成です。
いよいよビンゴマシーンへ・・・
今回はビンゴゲームの 主に ユーザー側のビンゴカードシートの作成までを紹介しました。乱数ロックも登場しましたね。
いよいよ次回はビンゴマシンを GASなしで どのように作成するか?
ですが、申し訳ないですが 年末年始は1週お休みをいただきます。
後編(ビンゴマシン作成)は、年明けまでお待ちください!
■このシリーズの次の記事
この記事が気に入ったらサポートをしてみませんか?