雛形シート(名簿)
- 2008/03/06 08:30
- カテゴリー:勝手にっ!大会支援
さて、雛形シートとは何?ってことで、まず雛形シートの説明からです。
通常、エクセルでこういった大会の集計を行う場合は、名簿や対戦表などを作って、種目が複数ある場合は、そのシートをコピーして、修正してを繰り返します。
シート間をリンクして計算していたり、集計用に別のシートを作ったりといった作業を行われていると思います。
コピーする場合は、そのリンク先のシート毎にコピーしたり名前を変えればいいのですが、種目が多くなるとその手間が増えてきます。
その手間を雛形のシートを作ってVBAにさせようと言うわけです。(大した手間では無いのですが)
雛形シートを作る場合、手作業で作る場合と違って、固定のリンク先を使用することがほとんど出来なくなります、あくまで全体設定に従ってリンク先を変えるようにしなければいけません。
そこで、特定のセルに全体設定の対応番号を入れ、その番号で全体設定シートを参照し、対応したシートからリンクするようにします。(結構めんどくさいんだなこれが)
ここは、INDIRECT関数を使って参照するようにします。
名簿シートの場合は、大会名ぐらいですかね、他のシートはとんでもなくたくさん設定する必要がありますが、ここは又後日に。
さて、名簿シートに必要な項目を設定します。
個人戦の場合
・受付番号(No.)
・抽選番号
・チーム名
・所属
・選手名
チーム名は、選手名から自動的に姓を取得して作ります。
ただし、これを行うには決まりが必要です、多くの方が姓と名を別のセルにして作っておられます、それはそれでもいいのですが、コピーする時に多少の不具合が出てきます。
何かと言うと、1つのセルに姓名が入っている場合は、それを手作業で分けなければいけないのです、これが別セルになっているとめんどくさいんです。
エクセルで頂く場合は、別セルで記入してもらえばいいのですが、ワードやメールで頂く場合は、手動で姓をこっちのセル、名をこっちのセルって感じで手間が多くなります、大量にやっていると結構しんどいんです。
そこで、このシートでは、姓と名の間は空白で区切るようにします。
そうすると、単純にコピーできますし、セル分けしたものでも、合体シートを作れば、単純にコピー出来ます。
空白で区切るのは、LEFT関数とFIND関数を組み合わせれば出来ます。
但し、空白を全角か半角に統一したいので、ここでVBAのWorksheet_Changeイベントを使って半角空白を全角に変換しています。
所属は現在の県協会の方式だと、同一市町村が当たらないようにするためのものです、例えばここが同じ富山県同士は、抽選時に同一地区エラーとなるようにするためのものです。(抽選については又後日に)
あとは、条件付書式で入力された項目に罫線を入れて表の完成です。
団体戦の場合
・受付番号(No.)
・抽選番号
・チーム名
・所属
・選手名
団体戦に関しては、チーム名を名簿から作らず登録された名称になるのと、選手名の入力数が多い以外は個人戦名簿と同じです。
対戦表や抽選等を同じ演算及びVBAで行いたいので、要になるセルは個人・団体とも同じセル列に置きます。(抽選番号、チーム名、所属)
それと、追加、変更、削除があった場合に、その更新日がわかる様に、日付が入るようにしてあります。
これは、HPに掲載された名簿を印刷された場合、自分が持っている名簿が新しいのか古いのかを判断してもらい、不要なトラブルを避けるためです。
この更新日付けは、名簿だけではなく対戦表にも付きます。
さて、これで名簿シートが出来ました。
抽選釦や対戦表印刷釦に関しては、また後日説明します。
あと、時間が出来た時に、以下の機能の追加を予定しています。(いつになるやら)
・所属によるオーダ番号のソート
同一所属同士が当たらないようにするためには、所属の多い順に抽選を行う必要があります、現在は手動で並び替えてるのですが、これをVBAでソートする機能を考えています。
(難しくは無いのですが、時間が中々取れなくて)
・印刷範囲自動設定
現在は印刷範囲を手動で設定しているのですが、ここを自動設定で出来るようにします。
(これも、ルーチンはある程度確定しているのですが、多い場合の縮小とページ分けをどうするか悩んでいます)
さて、次回は対戦表の雛形シートを作ります、これが結構大変なんです。