概要
| この記事の結論 Accessのクロス集計クエリは、行見出し・列見出し・値と集計方法を指定して作ります。 例えば部門を行、年月を列、売上金額の合計を値にすれば、部門ごとの月別売上を一覧できます。 |
この記事でわかること
- 集計の単位と元データを確認する
- ウィザードで行・列・値を選ぶ
- SQLで列見出しを固定する
- 空欄とパラメーターを扱う
この記事の主な内容
- クロス集計は行と列の交点へ集計値を置く
- 集計の単位と元データを確認する
- ウィザードで行・列・値を選ぶ
- SQLで列見出しを固定する
- 空欄とパラメーターを扱う
- 元の明細合計と照合して運用する
- よくある質問
想定読了時間:約8分
1 クロス集計は行と列の交点へ集計値を置く
Accessのクロス集計クエリは、行見出し・列見出し・値と集計方法を指定して作ります。
例えば部門を行、年月を列、売上金額の合計を値にすれば、部門ごとの月別売上を一覧できます。
Excelのピボットテーブルに似た見せ方ですが、クエリとして定義を保存します。
集計結果は元の明細を直接編集する画面とは分けて使います。

2 集計の単位と元データを確認する
元表T_売上に部門名、売上日、金額を用意します。
金額は数値または通貨、売上日は日付/時刻で保存します。
月番号だけでまとめると、異なる年の同じ月を合算するため、年月で区別します。
結合したクエリを元にする場合、結合によって明細が増えていないか確認してください。
集計前の多重行は、そのまま金額の二重計上につながります。
設定例と確認点
| 部門 | 売上日 | 金額 |
|---|---|---|
| 営業1 | 2026/9/1 | 1000 |
| 営業1 | 2026/9/2 | 500 |
| 営業2 | 2026/9/1 | 800 |

3 ウィザードで行・列・値を選ぶ
[作成]のクエリウィザードからクロス集計を選びます。
複雑な条件は先に選択クエリで整理しておくと、集計設定に集中できます。
操作手順
1. 元のテーブルまたは選択クエリを指定します。
2. 行見出しに部門名を選びます。
3. 列見出しに売上日の年月を使います。
4. 集計する値に金額、関数に合計を指定します。
5. 保存して営業1の9月が1500、営業2が800か確認します。


4 SQLで列見出しを固定する
フォームやレポートで使う場合は、毎回列数が変わると参照エラーの原因になります。
PIVOTのIN句、または列見出しプロパティで必要な年月を固定します。
売上のない月も列として用意できます。
サンプルコードと式
TRANSFORM Sum([金額]) AS 売上合計
SELECT [部門名]
FROM [T_売上]
WHERE [売上日]>=DateSerial(2026,9,1)
AND [売上日]<DateSerial(2026,12,1)
GROUP BY [部門名]
PIVOT Format([売上日],”yyyy-mm”)
IN (“2026-09″,”2026-10″,”2026-11”);

5 空欄とパラメーターを扱う
該当明細がない交点はNullになることがあります。
表示上0にしたい場合は、クロス集計を元にした選択クエリで Nz([2026-09],0) とするなど、未発生とゼロ売上の意味を確認してから変換します。
パラメーターを使う場合は、開始日・終了日を日付/時刻型として明示します。
クロス集計では型が認識できずエラーになる場合があるため、フォーム参照も含めて宣言を確認します。

既存Accessへの影響を判断できない場合
本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。
7 よくある質問
列見出しプロパティやPIVOTのIN句で列を固定します。
月だけでなく年月を列見出しにします。
パラメーターの名前と日付/時刻などの型を明示してください。
まとめと相談先
月を追加する運用では、固定した列見出しとレポート側の項目を一緒に更新します。
列が変わる前提なら、帳票設計も含めて運用方法を決めましょう。
本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。
参考情報
Microsoft:クロス集計
https://support.microsoft.com/en-us/access/make-summary-data-easier-to-read-by-using-a-crosstab-query
Microsoft:TRANSFORM
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/transform-statement-microsoft-access-sql