Microsoft Accessで同一氏名の複数エントリーを1行にまとめる方法

Microsoft Access

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を使わなくても、追加列や条件付き関数を使うことで、理想の形式に整形できます。事前にエントリー順に番号を付けることで、順序どおりにまとめやすくなります。

コメント

タイトルとURLをコピーしました