【参加者管理⑥】コース別ラウンドの参加コースを振り分ける

前回:【参加者管理⑤】各Rの勝者を集計する

前回で2Rまでは完成しました。
次は、1Rシード+2Rの勝者を3Rの各コースに振り分けていきます。

ここで、「コース別クイズ」の説明を一応しておきます。
これは、4~5個程度の異なるルールを設け、その時点で勝ち残っている参加者を各コースに分割して試合を行い、勝ち抜け者を決定するというものです。
多くの大会では、第1ラウンドのペーパークイズ、第2ラウンドのシンプルなm○n×クイズを経て、第3ラウンドにコース別が行われることが多いです。
参加コースは、多くの場合、1Rのペーパークイズにて、解答用紙に参加希望を書き(例:コースが4つある場合、a→d→b→cのように書く。このときaコースがその人の最も参加したいコースで、その次に参加したいコースがdコース…)、ペーパークイズの上位順に高い希望コースが通る、というシステムです。上位から希望コースを決めていき、あるコースが途中で定員に達してしまった場合は、もうこれ以上そのコースの希望は通らず、次に希望度の高いコースが定員かどうかをチェックする、というわけです。

この各参加者の参加コースをExcelに処理してもらおう、というのが今回のねらいです。
ペーパークイズの答案を採点し終わり、点数とコース別希望をExcelに入力すれば、自動的に各参加者の参加するコースが出力されるようにします。

それでは前回の続きから作っていきたいと思います。
今回までの完成品はこちらです。

【作り方】

①シード選手らの「2R通過順位列」に適当に文字を入れる

まず下準備として、12人のシード選手の2R通過順位列の部分に、何かの文字を入力します。ここでは全部1を入力しました。


これは、次のステップで、数式上、シード選手と2R勝者を統一的に扱うためです。

②「3R参加組列」に数式を入力し、各選手の参加コースを表示する

いよいよ、各選手の参加組を決定していきます。

まず、ペーパークイズ1位の選手は必ず第1希望に選択したコースに参加できます。
したがって、J3セルには以下の数式を入力します。

=D3

第1希望のコースそのままを参照すればいいですね。

続いて、2位以下の選手の参加コースです。
J4セルに以下の数式を入力し、J62セルまでオートフィルします。

=IF(I4="","",IF(COUNTIF($J$3:$J3,D4)<8,D4,IF(COUNTIF($J$3:$J3,E4)<8,E4,IF(COUNTIF($J$3:$J3,F4)<8,F4,G4))))

まず、I列に何も文字が入力されていない場合は、3Rには参加しない選手なので、何も表示しません。
次に、1位からその選手の1つ上位のプレイヤーまでの参加コース(J3~J○まで)をチェックして、もしその選手の第1希望コース(D列)に既に参加が決定している選手の数が8人未満であれば、その選手は第1希望のコースに参加できます。
もし既に8人に達してしまった場合は、次に第2希望コース(E列)について同様にチェックします。第3希望(F列)も同様にチェックし、最後までダメならば、仕方なく第4希望のコース(G列)に参加してもらうわけです。


ペーパー下位の2R勝者は希望通りのコースに参加できないことがわかります。

③「3R順番列」に数式を入力し、各選手の参加コース内での順位を表示する

続いてそのお隣のK列の数式です。
ここには、「その選手が参加するコースの中で、その選手のペーパー順位は上から何番目か?」という数字を表示させます。

K3セルに以下の数式を入力し、K63セルまでオートフィルします。

=IF(J3="","",COUNTIF($J$3:$J3,J3))

まずは3R参加者かどうかをチェックしてから、COUNTIF関数を使って、自分の参加コースが何番目かを表示させます。
J3セルからその人のJ列のセルまでの範囲の中に、その人の参加コースの文字がいくつあるかを処理させています。


④3Rの席順テーブルに各コースの参加者の1R順位を表示させる

3Rの席順テーブルに参加者を表示させていきます。

※以前の記事では一番左の列には「1,2,3,4」と入力していましたが、「a,b,c,d」と入力してください。



Q10セルに以下の数式を入力し、X13セルまでオートフィルします。

=SUMPRODUCT(($A$3:$A$62)*($J$3:$J$62=$P10)*($K$3:$K$62=Q$3))

SUMPRODUCT関数の出番です。ここでは、3つの配列をチェックし、条件にあうものだけを抽出します。

(1)A3:A62・・・1R順位

(2)J3:J62・・・3R参加組

(このうち、P列のセルに書いてあるコースだけをふるい分ける)

(3)K3:K62・・・3R参加コース内順位

(このうち、3行目のセルに書いてあるコース内順位だけをふるい分ける)

このようにして、参加コース(a~d)とコース内順位(1~8)の各組み合わせに適する選手を表示していきます。


あとは、このテーブルをもとに、前々回(参加者管理シリーズ第4回)のやり方を参考にしながら、3R各コースのシートに選手名・1R順位を表示します。
また、前回(参加者管理シリーズ第5回)の方法を参考にして、3R勝者の集計も行うことができます。

(次回に続く)

おまけ:3Rコース別の参加者一覧表を作る



得点表示シートとは別に、このようなシートを作っておけば、3Rの参加者を招集する際、参加者に自分のコースを早い段階で把握させることが可能となり、大会進行がスムーズになることでしょう。
2Rと3Rの休憩中に表示してみてはいかがでしょうか。

作り方は簡単です。3Rの席順テーブルをもとにINDEX関数とMATCH関数のあわせ技を使えばいいだけです。

ただ、画面が横長である以上、4コース32名の参加者を一斉に表示するのであれば、縦書きの名前を4行×8列に並べるよりも、上の画像のように、横書きの名前を8行×4列に並べて表示した方が、字が小さくならず見やすいかもしれません。

数式は記事冒頭に示したファイルを参照してください。

コメント

このブログの人気の投稿

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

クイズにおける「得点表示」とは?

【参加者管理①】ペーパークイズの成績を管理する