スケートの大会で使われる記録シートの作成依頼が来たのでヒマをみて作ってみる。
埼玉カップ事務局長のogawaさんより一番時間がかかるところは、タイム順位と午後のクラス分けのところだそうだ。
エントリーシート、各レースのシート、結果、作業マニュアルに目を通す。そして、過去の埼玉カップを思い返してみた。自分は計測係と着順係を担当していたが、入力係のところにはタイムが記録された紙と着順のビブNo.が書かれた紙が来る。それらの紙を元に入力がするのだが、この後の仕様を考えないと後の順位、クラス分けに影響が出てくる。流れは次の通りである。
- 各レースの横に着順とタイムを入力する。
- マクロを実行して、結果シートに書き込み、タイムでソートする。タイム入力する度に結果シートに書き込めば、リアルタイムにトップのタイムが分かるかもしれない。(入力が重くなりそうな気がするが) あと、印刷範囲の設定もすれば印刷も楽になるだろう。
- レースが終わったら、結果シートからマクロでクラスを分ける。
マクロは、結果作成マクロとクラス分けマクロの2種類あれば良さそう。
クラス分けはチャレンジとシニアの男子のみだが、オープンでは男女混合である。"チャレンジ", "オープン", "シニア"の文字列でクラス分けの方法を変えても良いが、急遽クラス分けの方法が変わった場合のことも考えて、何かフラグをつけて簡単に変更が出来るよう対応した方が良さそう。
マクロの起動には、「ツール」→「マクロ」→「マクロ」の方が良いのかな? まあ、ボタンのようにイベント駆動型でも簡単なので、この部分は後で考えよう。
次に入力方法だが、着順のビブNo.はそのまま数字を入力すれば良い。しかし、Excelの時間入力にはクセがあるので、タイム入力部分は以下のように考えた。
タイム入力部分
- 「12分34秒56」の場合、「1234.56」と入力。「55秒00」の場合、「55」と入力。
- セルの表示は、「セルの書式設定」の「表示形式」の「ユーザー定義」で、「[>=100]##":"##.00;[<100]##.00;;@」とする。こうすると「1234.56」が「12:34.56」と表示。「55」の場合、「55.00」と表示。数字以外はその文字列が表示される。
- 「1分85秒」などと変な入力が出来ないよう「データ」の「入力規則」で制限をかける。条件を「ユーザー設定」にし、「=OR(AND(MOD(N(セル),100)>=0,MOD(N(セル),100)<60,N(セル)>0),ISTEXT(セル))」(←セルには入力する場所を指定)。変な数字が入力されたらエラーメッセージを表示する。
- 「入力規制」では、他にも制御できる。まず、空白のセルで規制が引っかかるのはうざいので、「空白を無視する」にチェックを入れる。「日本語入力」を「無効」。マニュアル作成は面倒なので、入力メッセージに入力方法の例を記載。
とりあえず、今回はここまで。次回は結果シートの作成。