Microsoft Accessでカラオケ大会の審査用データを管理する際、同一氏名で複数エントリー番号が存在する場合、1行にまとめて表示する方法について解説します。VBAを使わずにクエリやクロステーブルを利用して実現可能です。
課題の整理
現在のテーブルは、氏名ごとに複数レコードが存在し、クラスとエントリー番号が別々に記録されています。理想は、同一氏名の情報を1行にまとめ、クラス1/エントリー番号1、クラス2/エントリー番号2の形式で表示することです。
このようにすることで、審査表として見やすくなるだけでなく、印刷や集計も容易になります。
クロステーブルクエリを利用する方法
Accessのクロステーブルクエリを使うと、値を列として展開できます。手順は以下の通りです。
- クエリデザインで元のテーブルを選択
- 集計行を有効にし、氏名ごとにグループ化
- クラスやエントリー番号を集計関数(FirstやMax)で列として表示
これにより、同一氏名の複数レコードを1行にまとめることができます。ただし、事前にエントリーの順序を示す番号やIDを付与すると、順序どおりに列に展開しやすくなります。
VBAを使わずに簡単にまとめる工夫
VBAに触れたことがない場合でも、以下の方法で簡単にまとめられます。
- テーブルに追加列を作り、エントリー順に番号を割り振る
- クエリで条件付きで列にデータを表示(IIf関数やSwitch関数を使用)
- クロステーブルクエリで列見出しとして番号を指定
これにより、1行に複数クラスとエントリー番号を表示することが可能です。
実例のイメージ
例えば、田中太郎さんが上級の部11番、歌謡の部33番に参加している場合、クエリ結果は以下のように表示されます。
氏名: 田中太郎 | クラス1: 上級の部 | エントリー番号1: 11 | クラス2: 歌謡の部 | エントリー番号2: 33
この形式であれば、審査用の一覧表としてそのまま利用できます。
まとめ
Accessで同一氏名の複数エントリー番号を1行にまとめるには、クロステーブルクエリや集計クエリを活用する方法が簡単です。VBAを使わなくても、追加列や条件付き関数を使うことで、理想の形式に整形できます。事前にエントリー順に番号を付けることで、順序どおりにまとめやすくなります。

コメント