投稿

6月 25, 2017の投稿を表示しています

基本⑤(終):「終わった問題」の行と「今の問題」の行を色分け表示する

イメージ
「基本シリーズ」、いよいよ最終回です。 前回… 基本④:タイトルバーを作り、問題数やラウンド名などを表示する 前回、「正誤スルー入力セル」の左側のB列に、「その問題が終了した(=その行に1つでも文字が入力されたか)」をチェックするセルを作りました。 今回はこれを利用し、「次の問題はどの行に入力すればよいのか」「その行はすでに入力済みか」を色でわかるようにします。 そうすることで、行を飛ばして入力してしまったり、1行の中に重複して入力したりする、といったミスを防ぐことができます。 これらのミスを犯したからといって、「正誤数を表示する」という面では特に問題はないですが、入力を飛ばしてしまったら入力するセルが足りなくなってしまうし、重複入力の場合は、実際の出題数よりも1問少なく表示されてしまいます。 状況によってセルの色を変える…これは条件付き書式の出番ですね。 それでは、 前回 の続きから作っていきます。 完成品は こちら です。 【使用するExcelの機能】 条件付き書式 【作り方】 ①終了済みの問題の行を灰色に着色するように設定する まず、B6セルに「1」を入力して下さい。 B6セルというのは、1問目が割り当てられている7行目の1つ上です。 なぜこのようなことをするのかは、あとで分かります。 (「1」という文字を見せたくない場合は文字の色を白に設定して下さい。) 正誤スルー入力セル全体、D7:L56を選択し、「条件付き書式」(「ホーム」タブ、「スタイル」グループ内)をクリック、その中から「新しいルール」を選択します。 「数式を使用して、書式設定するセルを決定」を選び、以下の数式を入力します。 =AND($B7=1,$B6=1) これは何をチェックしているかというと、「"その問題(行)がすでに出題済み"かつ"その1つ前の問題(行)がすでに出題済み"」かどうか?ということです。 「 勝利・失格時に色が変わるようにする 」の復習になりますが、入力する条件式は、「選択しているセルのうち最も左上のセルの場合」で書くのでしたね。今回の場合はD7セルです。 この数式を書く際に注意すべきことは、絶対参照です。行と列、どちらを"固定"するか?という問

基本④:タイトルバーを作り、問題数やラウンド名などを表示する

イメージ
「基本シリーズ」第4回です。 前回… 基本③:勝ち抜け・失格等のルール設定を変更できるようにする 次回… 基本⑤(終):「終わった問題」の行と「今の問題」の行を色分け表示する 画面上部にタイトルバーを作り、現在の問題数・ラウンド名・組数などを表示します。 とはいっても、今回Excelらしい機能を使うのは問題数表示のみです。 基本① のときにも述べましたが、当ブログで扱うExcel得点表示では、1問終わるごとに、正誤・スルーの情報を入力していきます。 正解ならばその選手の列・その問題の行のセルに「1」を、誤答ならば「x」を、スルーならば一番右の選手の更に右隣の列に「1」を入力するのでした。 今回は、その情報をもとに、問題数をカウントしていきます。 そのためには、各行の左端に、「その行はすでに正誤・スルー情報が入力されているかどうか」ということを示すセルを作り、真ならば1、偽ならば0を表示するようにしておけば、問題数はSUM関数で求めることができます。 なお、大会によっては、現在の問題数を表示しないという場合もあるでしょう。それでも、現在の問題数は内部的にカウントしておいたほうが色々と好都合な場合もありますので、常にカウンターを設けておくことをおすすめします。 それでは、 基本③ の続きから作っていきます。 完成品は こちら です。 【使用するExcelの機能】 ・関数「COUNTA」 【作り方】 ①「正誤スルー入力セル」の各行について、問題が終了したかどうかをチェックする。 A・B列が空白になっていますね。 まず、B行(厳密に言うとB7:B56)を「問題終了チェックセル」として使用します。 早押しクイズにおいて、1つの問題が終了するというのは、「誰かが答えた」か、「スルーになった・問題不備等の理由で無効になった」の2通りがあります。どちらが起きても、「正誤スルー入力セル」(D7:K56の範囲)のある1つの行に、どこか1つ文字が入力されます。 なので、1つの行について、「どこか1つに文字が入っている」ならばその行の問題は終了した、「どの列にも文字が入っていない」ならばその行の問題はまだ終了していない、ということになります。 ある範囲のセルに文字があるかないかを調べるには、COUNTA関数を用います。 これは

「アタック風サバイバル(アタサバ)」の得点表示の作り方

イメージ
「アタック風サバイバル(通称:アタサバ)」の得点表示の作り方を説明します。 正解によってポイントを積み重ねていく普通の形式とは違い、「アタック風サバイバル」は、相手のポイントを削り合っていく、サバイバル方式のルールです。 詳しく説明しますと… ・まず、各プレイヤーにライフポイント(2桁の値が多い)が与えられる。 ・早押しクイズで正解すると、その人以外の解答者のライフが減る(かつ、正解者に加点される場合もある)。 ・誤答すると、その人だけライフが減る。 ・持ちライフが0点以下になった人から失格していく。 ・規定人数以下になったらゲームセット。もし勝ち抜け枠よりも少なくなった場合はサドンデス等を行い調整する。問題数限定がある場合は、残りライフの多さなどで勝敗を決める。 この名前は、『パネルクイズ アタック25』で1989年から3回行われた、大学対抗の団体戦で行われたルールに由来しています。 1チーム25人のメンバーが順番に並び、各チーム1人ずつ解答席につきます。正解したチームの解答者はそのまま、それ以外のチームは次のメンバーに交代します。誤答した場合はそのチームのみ次のメンバーに交代します。 基本的には通常どおり、25枚のパネルが埋まった時点での獲得枚数を競いましたが、この企画では特別に、「途中で25人目のメンバーがアウトになったチームはパネルの枚数に関わらず敗退決定」というルールが追加されました。 現在行われているアタサバは、いわばこの"メンバーの人数"のみを勝敗の基準として採用しているわけです。 このルールは大会によってルールが異なる場合が多いです。そのため、簡単にルール変更ができるようにしておいたほうがよいでしょう。 そこで、前回の「 基本③:勝ち抜け・失格等のルール設定を変更できるようにする 」の続きから作っていきます。 ルール設定のためのパラメータは以下の4つです。 「ライフ初期値(A)」 「正解時に減る相手のライフ(B)」 「正解時に増える自分のライフ(C)」 「誤答時に減る自分のライフ(D)」 ※「誤答で自分以外ライフ増加」というルールを採用した大会もあるにはありますが、ここでは実装しません。 全部でN人の選手がいて、解答者i(i=1,2,…,N)の正解数をp_i、誤答数をq_iとします

基本③:勝ち抜け・失格等のルール設定を変更できるようにする

イメージ
基本シリーズ第3回です。 前回… 基本②:勝利・失格時に色が変わるようにする 次回… 基本④:タイトルバーを作り、問題数やラウンド名などを表示する 基本① では、勝ち抜け条件を「7問正解」、失格条件を「3回誤答」としました。 「by」の得点表示の作り方 では、勝ち抜け条件を「100点以上到達」、失格条件を「10回誤答」としました。 しかし、場合によっては5○2×とか3○1×とか10○10×とか、色々なルールに変えたいこともあるでしょう。 その都度、正解欄・誤答欄の数式の中の数字を変えるのは、少し手間がかかります。 そこで、普段は表示しない場所に「ルール設定セル」を設け、そこに勝ち抜け条件や失格条件といった数値を入力することで、簡単にルール設定を変えられるようにします。 今回は、 基本② で作成したものがすでにできている状態から作り方を記します。 完成品は こちら からダウンロードできます。 【使用するExcelの機能】 ・絶対参照 【作り方】 ①右側の場所に、ルール設定セルを設ける N3セルに「勝ち抜け」、O3セルに「失格」と記入します。 N4セルを勝ち抜け条件、O4セルを失格条件の記入欄に使うわけです。 わかりやすくするために、N4,O4セルに色をつけておきます。 編集中は表示倍率80%ですが、本番では表示倍率100%で使用するため、L列より右の範囲は画面に表示されません。 このように、「本番では見えない」「でも右にスクロールすればすぐ変更可能」という場所に設定セルを配置します。 ここではとりあえず、N4セルに「10」、O4セルに「4」とでも入れておきます。 ②ポイント表示セルの数式が、ルール設定セルを参照できるように変更する D4セルの数式を以下のように変更し、K4セルまでオートフィルします。 下線部の2箇所が変更点です。 =IF(SUM(D7:D56)>= $N$ 4 ,"WIN",IF(COUNTIF(D7:D56,"x")>= $O$4 ,"LOSE",SUM(D7:D56))) 先ほど説明したとおり、N4セルは勝ち抜け条件の値、O4セルは失格条件の値を入力するセルです。いまま