勝ち抜け時に順位を表示する
これまで紹介してきた得点表示では、勝ち抜けたプレイヤーの得点表示部が「WIN」と変わるように作られていました。
その部分が代わりに、抜けた順に「1st」「2nd」…と表示されるようになっている大会も一部存在します。
本記事では、そのような表示のさせかたを紹介します。
ここでは、「【参加者管理⑤】各Rの勝者を集計する」で作った「勝者記録テーブル」を利用します。
そのため、その記事の手順まで作ったものの続きから作っていきます。
完成品はこちらからダウンロード可能です。
その部分が代わりに、抜けた順に「1st」「2nd」…と表示されるようになっている大会も一部存在します。
本記事では、そのような表示のさせかたを紹介します。
ここでは、「【参加者管理⑤】各Rの勝者を集計する」で作った「勝者記録テーブル」を利用します。
そのため、その記事の手順まで作ったものの続きから作っていきます。
完成品はこちらからダウンロード可能です。
【作り方】
①1st、2nd…のリストを作る
勝ち抜け時に表示するための「1st」「2nd」…といった英語の序数のリストを、離れた場所に書いておきます。
リストを設けるスペースの先頭にあたるセルに「1st」と書いてからオートフィルすれば、一気に続きを入力することができます。
何個書けばいいかですが、そのラウンドの勝ち抜け人数に応じて用意して下さい。実用上10個弱あれば十分でしょう。
②得点表示部の数式を修正する
各プレイヤーの名前の下にある得点を表示する部分(ここではD5~O5)の数式を、以下のように修正します。
D5セルを以下の通りに修正しO5セルまでオートフィルすればOKです。
修正前(D5セルの場合)
=IF(SUM(D8:D57)+V$7>=$V$5,"WIN",IF(COUNTIF(D8:D57,"x")>=$W$5,"LOSE",SUM(D8:D57)+V$7))
修正後(D5セルの場合)
=IF(SUM(D8:D57)+V$7>=$V$5,INDEX($Z$4:$AF$4,INDEX($S$8:$S$52,MATCH(D$2,$T$8:$T$52,0))),IF(COUNTIF(D8:D57,"x")>=$W$5,"LOSE",SUM(D8:D57)+V$7))
書き換えるのは、「もし勝ち抜けたらどうするか」の部分です。
修正前は単に「WIN」と表示させるだけでした。修正後はどうでしょうか。書き換えた部分だけを取り出してみます。
INDEX($Z$4:$AF$4,INDEX($S$8:$S$52,MATCH(D$2,$T$8:$T$52,0)))
$Z$4:$AF$4は、先ほど作った順位リストの部分です。
$S$8:$S$52は、【参加者管理⑤】の手順③で作った「勝者記録テーブル」の「勝ち抜け順位列」です。
D$2は、そのプレイヤーの予選順位です。ただし非表示になっています。
$T$8:$T$52は、「勝者記録テーブル」の「勝ち抜けたプレイヤー表示列(予選順位で表示)」です。
まず、INDEX関数で、順位リストのどこかから表示させたいわけです。ではそのリストのどこを表示させたいかというと、(そのプレイヤーの抜け順)番目にほかなりません。ではそれをどうやって得るかというと、INDEX関数とMATCH関数の合わせ技で「勝者記録テーブル」から取得します。「そのプレイヤーの予選順位」をもとに、「そのプレイヤーの抜け順」を得るわけです。この勝者記録テーブルは、検索する値が取得したい値よりも後ろの列に存在するため、VLOOKUP関数は使えず、INDEX&MATCHでやるしかありません。
ここまでの修正では、勝ち抜けたプレイヤーにのみ順位が表示される仕様になっていますが、もしも「限定問題数終了後の判定によって勝ったプレイヤーにも順位を表示させる」という仕様にしたい場合は、次の手順を踏む必要があります。
③判定勝ちのプレイヤーにも順位を表示させる
得点表示部の数式の最初の条件分岐で、「もしも(正解数+アドバンテージ)の値が(勝ち抜けポイント数)以上に達したら」を「もしも勝者記録テーブルにその人の予選順位が表示されたら」に変更します。
修正前(D5セルの場合)
=IF(SUM(D8:D57)+V$7>=$V$5,INDEX($Z$4:$AF$4,INDEX($S$8:$S$52,MATCH(D$2,$T$8:$T$52,0))),IF(COUNTIF(D8:D57,"x")>=$W$5,"LOSE",SUM(D8:D57)+V$7))
修正前(D5セルの場合)
=IF(COUNTIF($T$8:$T$52,D$2)>0,INDEX($Z$4:$AF$4,INDEX($S$8:$S$52,MATCH(D$2,$T$8:$T$52,0))),IF(COUNTIF(D8:D57,"x")>=$W$5,"LOSE",SUM(D8:D57)+V$7))
コメント
コメントを投稿