「月別×担当者別の売上を一目で比較したい」「商品カテゴリ×地域の注文件数を表形式で把握したい」「年度別×部署別の予算消化率を二次元で確認したい」——こうした”縦横の掛け合わせ”で集計したい要求に応えるのが、Accessの**クロス集計クエリ**です。クロス集計クエリとは、指定したフィールドの値を列見出しとして横に展開し、行と列の交点に集計値を表示する特殊なクエリ形式です。ExcelのピボットテーブルをAccessのクエリとして実現するイメージと言えば分かりやすいでしょう。
Accessのクロス集計クエリはウィザードを使って数ステップで作成できます。作成したクロス集計クエリはそのままレポートのデータソースに設定でき、月次報告書・部門別集計表・カテゴリ別売上マトリクスといった業務帳票の土台として活用できます。MOS Access 365試験(MO-500)でもクロス集計クエリの作成と設定は出題範囲に含まれており、ウィザードの操作手順と行見出し・列見出し・値フィールドの役割を正確に把握しておくことが重要です。本記事では、クロス集計クエリの仕組みと通常の集計クエリとの違い・ウィザードを使った作成手順・行列の詳細設定・実務シナリオ別パターン・列見出しの順序固定・よくあるエラーと対処法・MOS試験攻略ポイントまで、ステップごとに徹底解説します。
「クロス集計クエリの作り方が分からない」「行見出しと列見出しの違いが曖昧」「ウィザードで作ったけれど列が思い通りに並ばない」という方は、ぜひ最後まで読んでください。
クロス集計クエリ・選択クエリ・集計クエリの違い
まず、Accessの代表的な3種類のクエリの出力形式の違いを整理しましょう。同じ「受注データ(担当者名・商品カテゴリ・売上金額・受注月)」を素材にしたとき、それぞれのクエリがどのような結果を返すかを比較します。
| クエリの種類 | 出力の単位 | 形式 | 主な用途 |
|---|---|---|---|
| 選択クエリ | 元テーブルの各レコード(1行=1受注) | 縦長リスト形式 | データの抽出・絞り込み・並べ替え |
| 集計クエリ | グループごとに1行(例: 担当者×月ごと) | 縦長集計形式(GROUP BY) | 合計・件数・平均などの集計値を縦に並べる |
| クロス集計クエリ | 行見出し×列見出しのマトリクス | 二次元表(行×列の交点に集計値) | 2軸の組み合わせを一覧で比較する |
たとえば「担当者別×月別の売上合計」を集計クエリで作ると、「担当者名・月・売上合計」の3列が縦に並ぶリスト形式になります。同じデータをクロス集計クエリで作ると、行に担当者名・列に月(4月・5月・6月…)・各セルに売上合計が入る二次元表として出力されます。縦長リストよりも横並び比較表のほうが直感的に読み取りやすい場面で、クロス集計クエリが威力を発揮します。
クロス集計クエリウィザードで作成する手順
Accessにはクロス集計クエリを対話形式で作成できる「クロス集計クエリウィザード」が搭載されています。まず、ウィザードを使った基本的な作成手順を解説します。
ステップ1:クロス集計クエリウィザードを起動する
Accessを起動してデータベースを開きます。[作成]タブの[クエリ]グループにある[クエリウィザード]をクリックします。「新しいクエリ」ダイアログが表示されたら「クロス集計クエリウィザード」を選んで[OK]をクリックします。このウィザードでは4つの画面を順番に設定していきます。
ステップ2:データソースを選択する
ウィザードの最初の画面で「どのテーブル(またはクエリ)を使うか」を選択します。「テーブル」「クエリ」「両方」のラジオボタンで絞り込み、一覧からクロス集計の素材にするテーブル(またはクエリ)を選択して[次へ]をクリックします。複数のテーブルのデータを使いたい場合は、事前にリレーションシップで結合した選択クエリを作成しておき、そのクエリをデータソースに指定します。
ステップ3:行見出しを設定する
「どのフィールドの値を行見出しにするか」を選択します。左側の「使用可能なフィールド」から行見出しにしたいフィールドを選んで[>]ボタンで右側の「選択済みフィールド」に移動します。行見出しは最大3フィールドまで指定できます。たとえば「担当者名」を行見出しに設定すると、クロス集計表の左端に担当者名が縦に並びます。[次へ]をクリックします。
ステップ4:列見出しを設定する
「どのフィールドの値を列見出しにするか」を選択します。列見出しは1フィールドのみ指定可能です。そのフィールドの各値(例: 月の「4月」「5月」「6月」など)が横方向の列名になります。列見出しとして適切なのは、値のバリエーションが限られているフィールドです(値が多すぎると列数が膨大になります)。選択したら[次へ]をクリックします。
ステップ5:値(集計値)を設定する
行×列の交点に表示する集計値を設定します。「フィールド」一覧から集計するフィールドを選択し、「関数」一覧から集計関数(Sum・Count・Avg・Min・Maxなど)を選びます。たとえば「売上金額」フィールドに「Sum」を選ぶと、各行×列の交点に売上合計が表示されます。「各行の合計を表示するか」のチェックボックスもここで設定できます(「はい」にすると行ごとの合計列が追加される)。[次へ]をクリックします。
ステップ6:クエリに名前を付けて完了する
クエリ名を入力して[完了]をクリックします。「クエリを実行するか、デザインビューを開くか」を選べます。初めて作成する場合はまず「クエリを実行する」を選んで結果を確認し、意図したとおりの表が出力されているかを確認します。
デザインビューとSQLビューで構造を確認する
ウィザードで作成したクロス集計クエリは、デザインビューで内容を確認・編集できます。デザインビューを開くと、通常の集計クエリとは異なり「集計」行と「クロス集計」行の2行が表示されます。
| フィールド | 集計行の設定 | クロス集計行の設定 | 役割 |
|---|---|---|---|
| 担当者名 | グループ化 | 行見出し | 二次元表の「行」の分類軸 |
| 月 | グループ化 | 列見出し | 二次元表の「列」(横方向の分類軸) |
| 売上金額 | 合計(Sum) | 値 | 行×列の交点に表示する集計値 |
デザインビューで「クロス集計」行のドロップダウンを変更することで、行見出し・列見出し・値の設定を修正できます。クロス集計行に設定できる値は「行見出し」「列見出し」「値」「(表示しない)」の4種類です。
SQLビューに切り替えると、クロス集計クエリ特有の TRANSFORM と PIVOT 構文が確認できます。たとえば「担当者別×月別の売上合計」を表すSQLは次のようになります。
TRANSFORM Sum(売上金額) AS 売上金額の合計
SELECT 担当者名
FROM 受注テーブル
GROUP BY 担当者名
PIVOT 月;
TRANSFORM が集計値(値フィールド)の定義、SELECT ... GROUP BY が行見出しの定義、PIVOT が列見出しの定義に対応しています。SQLビューで PIVOT の後に IN ("4月","5月","6月","7月","8月","9月","10月","11月","12月","1月","2月","3月") のように記述すると、列の順序と表示範囲を固定できます(後述)。
行見出し・列見出し・値の設定詳細
行見出しの設定ポイント
行見出しは最大3フィールドまで設定できます。複数フィールドを行見出しにすると、左端から順に入れ子になった分類軸が表示されます。たとえば「地域」と「担当者名」を行見出しにすると、左から「地域」「担当者名」の順に表示され、地域内の担当者ごとの集計が確認できます。行見出しフィールドの順序はウィザードの「選択済みフィールド」の並び順、またはデザインビューでのフィールドの左右順で決まります。
列見出しの設定ポイント
列見出しは1フィールドのみです。そのフィールドに格納されている値の種類が横方向の列名になります。列見出しとして適切なフィールドの条件は「値のバリエーションが少ない」「分類として意味がある」の2点です。
| 列見出しに適したフィールド例 | 特徴 | 注意点 |
|---|---|---|
| 月(1~12月) | 値の種類が12種類と限定的 | 数値のまま列名になるため「1月」形式への変換を検討 |
| カテゴリ名(A・B・C・D) | マスターテーブルで管理された有限の選択肢 | 新しいカテゴリが追加されると列が自動的に増える |
| 四半期(Q1・Q2・Q3・Q4) | 4種類のみで見通しが良い | 演算フィールド(DatePart等)で事前に生成しておく |
| 顧客名(数十~数百件) | 値が多すぎる | 列が膨大になり表が読みにくくなるため不適切 |
| 売上金額(連続数値) | 値の種類が無数にある | クロス集計クエリの列見出しには使わない |
値(集計値)の設定ポイント
値フィールドには1つの集計関数を設定します。行×列の交点に対応するレコードが存在しない場合、そのセルには「Null」または空白が表示されます。Nullを「0」として表示したい場合は、クエリ結果をフォームやレポートで参照する際にNz関数でNull→0変換を行います(クロス集計クエリ自体での変換は限られます)。
実務シナリオ別の活用パターン
シナリオ1:月別×担当者別の売上合計マトリクス
営業日報をAccessで管理している場合、担当者ごとの月次売上推移を一覧で比較したい場面があります。クロス集計クエリの設定は次のとおりです。
| 役割 | フィールド | 補足 |
|---|---|---|
| 行見出し | 担当者名 | 縦軸に担当者が並ぶ |
| 列見出し | 受注月(Month([受注日]) で演算) | 横軸に月番号(1~12)が並ぶ |
| 値 | Sum(売上金額) | 担当者×月の交点に売上合計が入る |
月の表示形式を「1」「2」ではなく「1月」「2月」と表示したい場合、事前に選択クエリで 受注月: Format([受注日],"mm月") などの演算フィールドを作成し、そのクエリをクロス集計クエリのデータソースに指定します。
シナリオ2:商品カテゴリ×地域の受注件数マトリクス
商品カテゴリと地域の組み合わせごとに受注件数を把握したい場面です。
| 役割 | フィールド | 補足 |
|---|---|---|
| 行見出し | 商品カテゴリ | 縦軸にカテゴリが並ぶ |
| 列見出し | 地域 | 横軸に地域名(東京・大阪・名古屋等)が並ぶ |
| 値 | Count(受注ID) | Nullにならない主キーフィールドをカウント |
この設定で実行すると、カテゴリ行×地域列のマトリクスに受注件数が表示されます。新しい地域が追加された場合、その値が自動的に新しい列として追加されます。地域の列順序を固定したい場合はSQLビューの PIVOT 句に IN ("東京","大阪","名古屋","福岡") を追加します(後述)。
シナリオ3:部署別×四半期別の平均コスト
経費テーブルから部署ごとの四半期別平均コストを分析する場面です。四半期の値は事前に選択クエリで 四半期: "Q" & DatePart("q",[発生日]) の演算フィールドを作成しておくと、クロス集計クエリで列見出しに直接使えます。
| 役割 | フィールド | 補足 |
|---|---|---|
| 行見出し | 部署名 | 縦軸に部署が並ぶ |
| 列見出し | 四半期(Q1・Q2・Q3・Q4) | 横軸にQ1~Q4が並ぶ(文字列で固定しやすい) |
| 値 | Avg(コスト金額) | 部署×四半期の平均コストが交点に入る |
列見出しの順序を固定する(PIVOT IN句)
クロス集計クエリの列見出しは、デフォルトではデータ内に存在する値がアルファベット順・文字コード順で並びます。月を列見出しにした場合、数値のまま列に使うと「1」「10」「11」「12」「2」…のように辞書順で並んでしまいます。列の順序を意図した順番に固定するには、SQLビューで PIVOT 句の後に IN (…) リストを追加します。
TRANSFORM Sum(売上金額) AS 売上金額の合計
SELECT 担当者名
FROM 受注テーブル
GROUP BY 担当者名
PIVOT 受注月 IN (4,5,6,7,8,9,10,11,12,1,2,3);
上記の例では4月始まりの年度順に列が固定されます。IN リストに含まれない値は結果に表示されず、リストにあるがデータに存在しない値は空の列として表示されます。デザインビューでは IN 句を直接設定できないため、SQLビューで直接編集する必要があります。
| 列見出しのケース | 問題 | IN句での対処例 |
|---|---|---|
| 月番号(1~12) | 辞書順で1,10,11,12,2,3…と並ぶ | IN (1,2,3,4,5,6,7,8,9,10,11,12) と明示 |
| 四半期(Q1~Q4) | 文字列では Q1,Q2,Q3,Q4 順になるが保証なし | IN (“Q1″,”Q2″,”Q3″,”Q4”) で明示 |
| 地域名(任意の文字列) | 追加した地域が列末尾に自動挿入される | IN (“東京”,”大阪”,”名古屋”) で固定(新地域は非表示) |
クロス集計クエリのよくあるエラーと対処法
クロス集計クエリを作成・修正する際に発生しやすい問題と対処法をまとめます。
| 症状・エラー | 原因 | 対処法 |
|---|---|---|
| 列が辞書順で並んでいる | PIVOTのIN句が未指定 | SQLビューでPIVOT句の後にIN (…)リストを追記する |
| 列数が膨大になる | 列見出しフィールドの値の種類が多すぎる | 列見出しに適した(値の種類が少ない)フィールドに変更するか、事前に選択クエリで値を丸める |
| 交点がNullで空白になる | その行×列の組み合わせにレコードが存在しない | レポートやフォームでNz関数(Nz([フィールド名],0))を使って0に変換する |
| 「クロス集計クエリは更新不可」と表示される | クロス集計クエリは読み取り専用のため編集不可 | データ更新が必要な場合は元のテーブルを選択クエリで開いて編集する |
| 行見出しに同じ値が複数行表示される | 行見出しフィールドと無関係なフィールドが「行見出し」に設定されている | デザインビューで各フィールドの「クロス集計」行を確認し、不要なフィールドを「(表示しない)」か削除する |
| ウィザードでデータソースが見つからない | 複数テーブルを跨いだ場合にリレーションシップが未設定 | 事前にリレーションシップを設定した選択クエリを作成し、そのクエリをデータソースに指定する |
最も多いトラブルは「列の順序が意図と異なる」です。月を数値のまま列見出しにすると1,10,11,12,2,3…の辞書順になります。この問題はSQLビューでのIN句追加か、事前に「01月」「02月」のようにゼロ埋めした文字列フィールドを作成することで回避できます。
クロス集計クエリをレポートのデータソースに使う
作成したクロス集計クエリは、Accessのレポートウィザードのデータソースとして指定できます。クロス集計クエリを選択→レポートウィザードを起動→必要なフィールドを選択、という手順で二次元表をそのまま印刷可能な帳票レイアウトに仕上げられます。
ただし、クロス集計クエリの列は動的(データの値によって増減する)であるため、レポートのデザインビューで列を手動配置する場合は列数が固定されていることが前提になります。SQLビューのIN句で列を固定してから、レポートのデザイン作業に進むことを推奨します。
MOS Access試験でのクロス集計クエリ関連の出題ポイント
MOS Access 365試験(MO-500)のクエリに関するスキル領域では、クロス集計クエリの作成と設定が出題範囲に含まれます。試験本番で操作を迷わないよう、以下のポイントを押さえておきましょう。
- ウィザードの起動方法:[作成]タブ→[クエリウィザード]→「クロス集計クエリウィザード」の順で起動することを確実に覚える
- 行見出し・列見出し・値の役割の区別:それぞれが二次元表のどの部分を担うかを明確に理解する。試験では「〇〇を行見出しに、〇〇を列見出しに設定する」という具体的な指示が出る
- 列見出しは1フィールドのみ:複数フィールドを列見出しに設定しようとするとウィザードが先に進めない。列見出しは必ず1フィールドに絞る
- デザインビューの「クロス集計」行:通常の集計クエリにない行がクロス集計クエリには表示される。「集計」行との2行構成を理解しておく
- SQLビューのTRANSFORM・PIVOT構文:試験ではSQLの直接編集は多くの場合ウィザード・デザインビュー操作で対応できるが、IN句での列固定はSQLビュー編集が必要なケースがある
- 「各行の合計を含める」オプション:ウィザードの値設定画面にある「はい(各行の合計を含める)」チェックボックスの役割を確認しておく
- クロス集計クエリは読み取り専用:元データの変更はできず、あくまで集計表示のみという特性を覚えておく
MOS試験 クロス集計クエリ操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| ウィザードの起動 | [作成]→[クエリウィザード]→「クロス集計クエリウィザード」を選択できる | ★☆☆ |
| データソースの選択 | テーブルまたはクエリをウィザード画面で指定できる | ★☆☆ |
| 行見出しの設定 | 指定フィールドを「行見出し」に設定できる(最大3フィールド) | ★☆☆ |
| 列見出しの設定 | 指定フィールドを「列見出し」に設定できる(1フィールドのみ) | ★☆☆ |
| 値の設定 | 集計フィールドと集計関数(Sum・Count等)を設定できる | ★☆☆ |
| 行合計の追加 | 「各行の合計を含める」オプションを操作できる | ★★☆ |
| デザインビューでの修正 | 「クロス集計」行のドロップダウンで行見出し・列見出し・値を変更できる | ★★☆ |
| 列固定(IN句) | SQLビューでPIVOT句にIN (…)を追記して列順序を固定できる | ★★★ |
| レポートへの活用 | クロス集計クエリをデータソースとしてレポートウィザードで帳票を生成できる | ★★☆ |
MOS試験のクロス集計クエリ問題は、ウィザードを使った新規作成が中心です。ウィザードの4つの画面(データソース→行見出し→列見出し→値)を迷わず操作できるよう、実際にAccessのサンプルデータベースを使って繰り返し練習することを推奨します。受験料は2026年7月時点で一般価格12,980円(税込)・学割価格9,680円(税込)です。試験時間は50分、採点は1,000点満点で実施されます。合格点は非公表で550点~850点が目安とされています。合格率は公表されていません。
まとめ:クロス集計クエリは行×列の掛け合わせ分析を二次元表で実現する
本記事のポイントをまとめます。
- クロス集計クエリとは:行見出し・列見出し・値の3要素で構成される二次元集計表。行×列の交点に集計値(合計・件数・平均など)を表示する。ExcelのピボットテーブルをAccessクエリとして実現するイメージ
- 通常の集計クエリとの違い:集計クエリは縦長リスト、クロス集計クエリは横広の二次元マトリクス。2軸の比較・傾向把握に適している
- 作成方法:[作成]→[クエリウィザード]→「クロス集計クエリウィザード」で4画面を設定するだけ。データソース→行見出し(最大3フィールド)→列見出し(1フィールド)→値(集計関数)の順に指定する
- 列見出しの選択基準:値のバリエーションが少ないフィールドを選ぶ。値が多すぎると列が膨大になり表が読みにくくなる
- 列順序の固定:デフォルトでは辞書順になるため、SQLビューのPIVOT句にIN (…)を追記して意図した順序に固定する
- デザインビューの構造:通常の集計クエリの「集計」行に加え「クロス集計」行が追加される。各フィールドの「クロス集計」行で「行見出し」「列見出し」「値」を確認・変更できる
- 読み取り専用:クロス集計クエリでは元データの直接編集はできない。データ更新は元のテーブルまたは選択クエリから行う
- レポートとの組み合わせ:クロス集計クエリをレポートのデータソースにすることで、二次元集計表を印刷可能な帳票に仕上げられる。IN句で列を固定してからレポートを設計することを推奨
- MOS試験対策:ウィザードの4画面の操作手順・行見出し・列見出し・値の役割・デザインビューの「クロス集計」行を体験的に習得する
クロス集計クエリをマスターすると、Accessに蓄積したデータをそのままExcelのピボットテーブルのような二次元マトリクスで分析できるようになります。集計クエリで縦長リストを出力するだけでなく、担当者×月・カテゴリ×地域・部署×四半期といった2軸の組み合わせ分析が必要な場面でクロス集計クエリを活用してください。まずはウィザードで簡単なクロス集計クエリを作成し、列の並び順をSQLビューのIN句で整えるところまで練習すると、実務でもMOS試験でも迷わず対応できるようになります。
PR
MOS試験シリーズの定番対策テキスト。試験の形式・操作の確認方法・出題パターンの把握に最適です。MOS Access試験の学習にも共通する試験運営の仕組みを理解するために活用できます。
PR
Microsoft Copilot for Microsoft 365活用大全
Microsoft 365全アプリのAI活用ノウハウを一冊に凝縮。Accessを含むOffice各ツールのデータ集計・分析・自動化の考え方を広げたい方におすすめです。クロス集計クエリで整理したデータをさらに活用するヒントが得られます。
