いのエう’s blog

のんびりと更新していきます o(^-^)o

記録シート作成記 02

2006-07-07 22:43:34 | PC

 今回は結果シートの作成。データが違ったときのために、なるべく数式を使うことにする。そうすることで、Excelでも簡易データベースになる。MS Accessなんて持ってないし、数百人くらいならばデータベースは必要ないだろう。
 本当は、エントリーシートから数式を使って参照していけば、誤字などの修正時かなり楽になるんだけど・・・
 今回も前回と同様にマクロは使っていない。いきなりマクロで作成するとバグ潰しが面倒になるので、少しずつ作成していく。マクロを使うところは、ここに書いてある通りで考える。
 必要な項目は、次の通り。

  • 順位1から順番に割り当てる。同タイムは、同じ順位にする。これらから、RANK関数をする。

=RANK(タイムのセル, 全員のタイムのセル範囲, 1)

  • タイム次の2通りの案がある。

1.  記録シートからそのまま持ってくる。

=記録シート!セル

2.  記録を時間に変更する。
    (1日を1.0としたシリアル値に変更)

=TEXT(INT(セル/100)/(24*60)+MOD(セル,100)/(24*60*60),"mm:ss.00")

左寄せで表示されるため、右寄せにする。

 今後の記録を比較するためにも、2.の方法の方が良いかもしれない。

  • ビブ
  • 氏名
  • ふりがな
  • クラス
  • 年齢(いちおう列を非表示)
  • クラブ

これらの項目は記録シートからそのまま持ってくる。

=記録シート!セル

ビブNo.からVLOOKUP関数で持ってくるという方法もあるが、そのまま持ってきた方が重くならないだろう。

 表示項目の列は上から順。これも簡単に変更可能なように、セル番号に$文字をつけて対応する。

ソートは、順位で昇順に。
印刷範囲は、記録全てを指定。
タイムがない(未入力 or 文字列)場合。ビブNo.はあるが、タイムが記録されていない時で判定。文字列をそのまま持ってくるか、"DS"と書き込む。

=IF(記録シート!ビブ<>"" AND 記録シート!タイム<>"",記録シート!タイム,"DS")

今回はここまで。次回は、クラス分け。


マクロで数式を作成するときの覚書。

Worksheets("Sheet1").Range("A1").Formula = "=IF($B3<>"""",VLOOKUP($I3,$B$3:$G$13,2,0),"""")"