読者です 読者をやめる 読者になる 読者になる

リーグ戦を管理するノウハウについて

今まで、なぜか色々なリーグ戦のスコア管理を任されていました。そこで、色々調べたりして便利な(人間が手を動かさなくても良い)関数を一覧としてメモしたいと思います。参考になれば幸いです。

参考までに、いままで管理したリーグ戦の一覧を以下に示します。

  • 第一回、第二回嶺上杯
  • とと太郎さん主催マルチウェポンで遊ぼうの会
  • はんじょうさん主催身内リーグ戦
  • とと太郎さん主催招待制リーグ戦

こんなところでしょうか、意外に少ないですね。でも色々自動で出来るようにしているので、ノウハウを共有したいと思います。

便利な関数群

countif

「第二引数の文字が第一引数の範囲内にいくつ存在するか」を返してくれます。リーグ戦のスコア管理では以下において、勝ち数/負け数の管理に使っていました。シートに入力されるだけで自動的に反映されるので、めちゃくちゃ便利です。

f:id:li_saku:20151231152642p:plain *1

countif(C3:AH3, "o")

rank

「第二引数の範囲内で、第一引数で指定した値がどの順位にいるか」を返してくれます。第三引数は降順にするのか昇順にするのか、です。0が降順、1が昇順だったはず?その辺りは調べたほうが良いかもしれません。 リーグ戦において、順位の管理で使っていました。
また、注意することがあって、大体の場合一番上のセルに入力して下にがーーーってコピーすることが多いんですが、Google Spread Sheet において相対参照(セルに $ がついていないやつ)をすると、範囲まで変わってしまうので、「基準にしたい範囲」については絶対参照(セルに $ がついたやつ)にしたほうが良いです。 画像は *1 参照したほうがわかりやすいと思います。

rank(AL3,$AL$3:$AL$10,0)

セル結合のテク

見やすさ、管理のしやすさ、関数を使いたいがためにわたしはセル結合を良く使用します。 たとえば、countif / 勝数の合計 / 負数の合計を使用したいがために以下のようにしていました。それぞれのチームについて4つのセルが使用されています。

f:id:li_saku:20151231152723p:plain

勝敗 | 取った本数 | - | 取られた本数 という形ですね。間の - は参加者が見やすいかな、という気持ちで加えましたが、楽さを考えるならなくても良いと思います。はじめに最初の1行目を作成して、ぐいっと下にがーーってコピーしちゃうのが楽だと思います。

対戦順

リーグ戦での対戦順、非自明じゃないですか?なので、Circle - Method というものを使用して対戦順を作るコードを書きました。一応 URL を載せておきます。このコードについてもまた今度別途解説記事を書きます。作成には上智大学理工学部情報工学科 データ構造とアルゴリズムの講義資料の講義資料を参考にさせていただきました、ありがとうございます。

また、わたしが自分で作成するまではこのページを使っていました。チームを入れて、開始時刻、試合間隔を適当に設定するとよいです。また、コート数というのは参加チーム数 / 2 を切り捨てた値を入れると良いです。これ、作成した後の対戦順を csv ファイルでダウンロード出来るので、スプレッドシートにコピペとか出来ていい感じです。結構オススメ。

リーグ戦だと自分の対戦が終わった後に相手が終わってるかどうか確認するのが面倒だと思ったので、参加者の手間を減らすという意図でスコアを管理すると同時に対戦記録も管理していました。
これにより、終わった側が先に部屋を立てたり、まだ終わってないから待つべきだな、という情報がリアルタイムに参加者側へ伝えられるため、かなりスムーズに進行出来たのではないかと思っています。

こんなところでしょうか。思ったよりなかった………参考になれば幸いですが、一応今回の countif や rank を使用したリーグ戦のスコアを載せておきます。とと太郎さん、使用してごめんなさい!関数とか見られると思うので、何か参考になれば。