基本①:「m○n×クイズ」の得点表示の作り方

まず、「m○n×(mマルnバツ)クイズ」の得点表示の作り方を通して、基本機能の解説を5回に分けて行います。
この全5回の「基本シリーズ」は、最低限必要な機能を解説しているので、必ず目を通してもらいたいと思います。
次回…基本②:勝利・失格時に色が変わるようにする

「m○n×」とは、「m問正解で勝ち抜け、n問誤答で失格」となる早押しクイズのルールのことです。
簡単にカウントできるシンプル性はもちろん、mとnの数値を変えるだけで競技者に求める戦術を多彩にアレンジできることから、おそらく草クイズ界では最もよく用いられる形式です。

今回は、まず「8人で行う50問限定の7○3×」の得点表示を作ります。
この記事で作ったものをベースに、以降の記事で、機能を少しずつ拡張していきます。

この記事で述べられているステップは、今後紹介する他のクイズ形式の得点表示にも通じるものなので、必ず読んでいただきたいです。

完成品はこちらからダウンロードできます。
(Google Drive上では表示が崩れてしまいますが、ダウンロードすればきちんとしたレイアウトになります)

※以下、「行」といったら横のライン(1,2,3,…)、「列」といったら縦のライン(A,B,C,…)を意味します。

【使用するExcelの機能】

・関数「SUM」
・関数「COUNTIF」
・関数「IF」
・ウィンドウ枠の固定

【作り方】

(当ブログの画像上ではExcel2010を用いておりますが、それ以降のバージョンでも同様の方法が使えるはずです)

①「名前表示セル」を作る

まず、3行目のセルを選択します。
画面左に並ぶ数字の見出しの中から、「3」をクリックします。すると、図1のように3行目全体が選択されます。

ちなみに、なぜ1行目ではなく3行目かといいますと、今後、名前表示行より上の行に、「ラウンド名などを表示する行」や「参加者を管理するための番号を書いた非表示の行」を作るためです。

次に、「3」と「4」の見出しの境界線にポインターを合わせてドラッグし、セルを縦に長く伸ばします。
大きさはどうせあとで微調整するので、とりあえず240.00にでも設定します。
この行の各セルに、縦書きで名前が入るわけです。

数値でズバリ設定したい場合は、「3」の見出しを右クリックし、「行の高さ」を選択すると、入力画面が出てきます。

続いて、この行に入る文字が縦書きかつセルの中央に来るように設定します。
3行目を選択した状態で、第3行の範囲内にポインターを合わせ、右クリックし「セルの書式設定」を選択します。
「セルの書式設定」ウィンドウが現れたら「配置」タブを選択します。
「方向」では縦書きの「文字列」をクリックし、「文字の配置」では「横位置」の欄を「中央揃え」にします。


ためしに第3行に文字を入力しますと、きちんと縦書きでセルの中央に文字が表示されていることが確認できます。

今回は8人で行うので、D列からK列までを使用します。
A~Cの3列は、今後別の用途で使用するため、開けておきます。

②「ポイント表示セル」「誤答数表示セル」を作る

第4行を「ポイント表示行」、第5行を「誤答数表示行」と定めます。

先ほどと同様、まずはセルの高さを設定します。
ここもどうせあとで変えるので、とりあえず今は以下の通りに設定します。

第4行:54.00
第5行:33.00

第4行と第5行を選択し、画面上部の「中央揃え」ボタン(「配置」内)を押します。


③「正誤・スルー入力セル」を作る

この得点表示では、各問題における正誤を入力するためのセルを画面下部に用意します。
答えた人の列にカーソルを合わせ、正解時には「1」、誤答時にはアルファベットの「x」を入力するというものです。

まず、目印となるように、入力範囲に罫線を引きます。
A7セルからL56セルまでをドラッグで選択します(6行目は空白のまま開けておいて下さい)。
今回は「8人プレイ・50問限定」なので、50行(第7~56行)×12列(3列+プレイヤー数8列+スルー入力用1列)を選択します。

そして、画面上部から「罫線」ボタン(「フォント」内)を選び、「格子」を選択します。


次に、C7~C56に、問題番号を表す数字を入力します。
その際、1つ1つ手入力せずに「オートフィル」を用いると、一瞬で入力することが可能です。

オートフィルとは、Excelの基本機能の一つで、例えば「1月,2月,…」などのような等間隔の数値を連続で入力したい場合や、各列ないし各行ごとに機能する数式などをコピーしたい場合に用います。詳しい説明は各自ググってください。

まず、C7セルに「1」、C8セルに「2」を入力します。そして、C7とC8をドラッグで両方選択した状態で、選択フレームの右下にある小さな四角にポインターを合わせます。すると、ポインターが黒い十字になります。
この状態で、C56までドラッグします。すると、C7~C56にそれぞれ1,2,…,50の数字が入力されます。



④「ウィンドウ枠の固定」により、「正誤・スルー入力セル」のみをスクロールできるようにする

試合中は「正誤・スルー入力セル」に1問1問の結果を入力していきますが、画面上部には常に第3~5行(名前・正誤数)を表示し、画面下部のみ上下にスクロールできるようにしてあげなければなりません。

まず、D7セルを選択します。
次に、画面上部の「表示」タブを選択し、「ウィンドウ枠の固定」(「ウィンドウ」内)を選択、「ウィンドウ枠の固定」を選択します。

これにより、第6行より上の範囲は常に画面に表示され、第7行より下の範囲のみがスクロールされるようになりました。
また、列に関していうと、A~C列は、左右のスクロール操作をしても常に画面に表示されます。

⑤「ポイント表示セル」「誤答数表示セル」に数式を入力し、正誤をカウントできるようにする

【ポイント表示セル】

D4セルに、以下の数式を入力します。

=SUM(D7:D56)

SUM関数は、括弧の中で指定した範囲のセルをチェックし、その中にある数字の合計値を求める関数です。
これにより、D4セルはD7からD56の範囲にある「1」の数、すなわち正解数を表示できるようになりました。

最初は「0」と表示されますが、D列の「正誤・スルー入力セル」に1やxを入力してみましょう。



入力した1の数と同じ値がD4セルに表示されることが確認できます。

同様に、E4~K4にも同様の機能を持つ式を入力しますが、ここでも「オートフィル」を用います。

D4セルを選択し、選択フレームの右下にある小さな四角にポインターを合わせます。すると、ポインターが黒い十字になるはずです。この状態で、K4セルまでドラッグします。


E4~K4のセルの中身を見てみると、SUM関数の選択範囲がきちんと、各列に対応した範囲になっていることが確認できます。
(例:G4セルならば「=SUM(G7:G56)」)

なお、オートフィルで数式をコピーする際、場合によっては、元のセルに入力した数式内の範囲の一部を「絶対参照(セルの行ないし列を表す文字の前に「$」をつける)」にするといったことがありますが、それはまた別の機会に説明します。

【誤答数表示セル】

D5セルに以下の数式を入力します。

=COUNTIF(D7:D56,"x")&"×"

COUNTIF関数は、指定した範囲内に、特定の文字(今回の場合は"x")を入力したセルがいくつ存在するかを求める関数です。
また、数式と文字列を「&」で接続することにより、計算で求めた数値と、決められた文字列をくっつけて表示させることが可能です。

誤答数も同様に、K5セルまでオートフィルします。


"x"の数もカウントされていることが確認できます。

⑥勝ち抜け時に「WIN」、失格時に「LOSE」と表示できるように、数式を変更する

勝ち抜け時・失格時に、第4列の表示が変わるようにします。
今回は7○3×なので、7問正解時に「WIN」、3回誤答時に「LOSE」と表示するように設定します。

D4セルの数式を、以下の通りに書き直します。
その後、E4~K4セルにオートフィルするのを忘れずに!

=IF(SUM(D7:D56)>=7,"WIN",IF(COUNTIF(D7:D56,"x")>=3,"LOSE",SUM(D7:D56)))

いきなり長くなってしまいましたね。これはIF関数を用いたことによるものです。
IF関数では、「条件」「条件を満たした場合に表示するもの」「条件を満たさない場合に表示するもの」を指定します。

まず、「7問正解したかどうか?」をチェックし、それが正しいならば「WIN」と表示します。そうでないならば、今度は「3回誤答したかどうか?」をチェックし、そうならば「LOSE」と表示し、そうでないならば正解数を表示します。
条件式は等式や不等式で記述します。今回のような正解数や誤答数のチェックの場合は、不等式の方が安全です。

試しに、D列に1を7つ入力したり、xを3つ入力したりして、WINやLOSEが表示されるかどうかを確かめてみましょう。



IF関数の条件分岐は、場合によってはかなり複雑になることがあります。上記の条件分岐はまだ単純なほうです。これから先、もっと複雑なものが登場します。
そういうとき、数式を見やすくするための工夫として「セル内改行」をおすすめします。これは、Alt+Enterで可能です。

今回は説明のため、⑤の数式を書いた後に⑥で修正するという流れでしたが、慣れたらいきなり第4行に⑥の数式を書いても無論構いません。

⑦セルの横幅を調節する

画面いっぱいに表示するため、各列の横幅を調節します。
調節方法は①で述べたのと同様に、列の見出しの境界線にカーソルを合わせてドラッグするか、右クリックで直接数値を入力します。

【左3列+スルー列(A~C列,L列)】

これらの列は表示物の邪魔にならないよう、必要最低限の幅さえあれば十分です。
そのため、半角1文字(C列は2文字)が入る程度の幅でよいです。

ここでは、A・B・L列は1.50、C列のみ3.00で設定します。

【名前表示セル(D~K列)】

「A~C,L列が使っている部分以外の残りのスペースを全て使う」という考え方のもと、スルー列がウィンドウからはみ出ないギリギリまで伸ばします。

見出しのD列からK列までをドラッグし、D~K列を一括で選択します。そして、D~K列のうちいずれかの列の幅を変えると、今選択している8列全ての幅が同じように変化します。

この幅は画面やプロジェクターの解像度によって変化するので、探り探りで調節します。8列まとめて幅を操作するため、少しずらしただけで大幅に変化してしまうことに注意して下さい。

なお、使用する際は、列の見出しを非表示にすることが前提となります。
見出しを非表示にするには、画面上部の「表示」タブを選択し、「表示」内にある「見出し」のチェックボックスをオフにします。
すると、行・列のチェックボックスが表示されなくなり、左上に少しだけ移動します。このときの状態を考慮して名前欄の横幅を調節して下さい。



⑧各行のフォントを設定する

名前・正解数・誤答数のフォントをそれぞれ設定します。
第4~6行の各行において、D~K列を選択し、「ホーム」タブの「フォント」内にあるボタン・プルダウンリストで設定します。

以下にフォントの一例を示します。

【名前】
フォント:HGP創英角ゴシックUB
大きさ:全角5文字がちょうど収まるように調整。

【正解数・誤答数】
フォント:Agency FB
大きさ:なるべく大きく。数字の上下が切れないギリギリを狙う。

文字の大きさは、ここでは具体的な数値を述べるのではなく、設定する際の考え方を示すだけにとどめておきます
(画面レイアウトについての詳しい話はまた別の機会にやります、多分)。

文字の大きさを決める際は、セルの高さも変えつつ行うとよいです。
正誤・スルー入力セルの範囲は、正直3~5行見えていれば十分です。そのため、名前・正解数・誤答数の3つの文字はなるべく大きくなるように設定しなければなりません。
なおかつ、実際使用する際は「全画面表示」です。すなわち、画面上部のタブが使っているスペースも開くわけです。この点も考慮しながら、高さを決めていかなければなりません。

なお、名前列の高さを大きくすると、その下の正解数・誤答数の列はスクロールしても表示されなくなってしまいます。このような場合は、ウィンドウ右下で表示倍率を小さくして作業をするとよいでしょう。

こうして、以下のような画面が完成します。



とりあえず、これで基本的な機能はひととおり完成しました。
ここからは、少しずつ要素を追加していく形になります。
要素を追加すると、またスペースを圧迫し、名前行を低くしないといけなくなることもあります。完成までは微調整の連続です。

【使い方】

シングルチャンス(=1問につき先着1名のみが答えられる)早押しクイズは、1問1問の結果は「誰々が正解」「誰々が誤答」「スルー」の3通りです。

答えた人が正解した場合

・正解者の列・今出題した問題の番号の行のセルを選択し、半角で「1」を入力する。

答えた人が誤答した場合

・誤答者の列・今出題した問題の番号の行のセルを選択し、半角で「x」(アルファベット)を入力する。

スルーの場合

・スルー列(一番右の解答者の列の1つ右隣)・今出題した問題の番号の行のセルを選択し、半角で「1」を入力する。


1問終わって入力するたびにEnterを押して、1行ずつ下にカーソルが動いていくことになります。
ちなみに、正解の入力を「o」ではなく「1」にしているのは、正解と誤答を両方とも左手で入力できるようにするためです。また、押し間違いを防ぐために、2つのキーをある程度離しておく、という工夫も組み込まれています(xの隣のzにしなかったのはこれが理由です)。こちら

コメント

  1. すみません。勝ち抜けた時、ただ「WIN」などと表示するだけでなく、「1st」「2nd」などのように勝ち抜け順を表示する方法が知りたいのですが、教えて頂けませんか?

    返信削除
  2. ごアクセス&ご質問ありがとうございます。
    先ほど更新いたしました最新記事(https://excelscoredisplay.blogspot.com/2019/06/blog-post.html)をもって回答とさせていただきます。

    返信削除

コメントを投稿

このブログの人気の投稿

参加者の苗字と名前を分離する/選手名を均等な大きさで表示する

勝ち抜け時に順位を表示する