【クエリ】クロス集計クエリ 2種類の作成方法を解説

クエリ

Accessで管理しているデータをExcelのピボットテーブルのように、行×列の2次元データとしてまとめて表示したい場合もあると思います。たとえば「月ごとの売上を商品別に一覧で見たい」といったケースです。

Accessでは、クロス集計クエリを活用することで実現できます

この記事ではAccessでクロス集計クエリを作成する2種類の方法について、仕組みから実際の作成手順までを、順を追って解説していきます。

クロス集計クエリとは

クロス集計クエリとは、データを「行」「列」「値」で構成して集計表示するクエリです。

通常の「選択クエリ」による集計は“縦方向”に結果を出すのに対し、
クロス集計クエリでは“横方向”にも項目を展開して、見やすい一覧表を作ることができます。

たとえば、次のような「売上テーブル」があるとします。

サンプルテーブル

これをクロス集計クエリで「月別 × 支店別」にまとめると、次のような表になります。

見た目がExcelのピボット表に似ており、「どの月にどの支店でどれくらい売れたか」がひと目で分かります

クロス集計クエリの作成方法

クロス集計クエリには、次の2種類の作成方法があります。

①ウィザードで作る方法(初心者向け)
②デザインビューで作る方法(応用向け)

今回は、こちらのサンプルテーブルを題材に支店別の月別売上合計を求める集計を、それぞれの方法で詳しく解説していきます。

サンプルテーブル

方法①:ウィザードで作成(初心者向け)

クロス集計クエリウィザードは、画面指示作業を進めることで作成することができる、対話式の便利な機能です。特に初心者におすすめです。

メニューから [作成]→[クエリウィザード]→「クロス集計クエリ ウィザード」

メニューから「作成」→「クエリウィザード」から「クロス集計クエリ ウィザード」の順番に選択しています。

対象テーブル(クエリ)を選択する

クロス集計を行う対象のテーブル(またはクエリ)を選択する画面が表示されますので、テーブルを選択し、「次へ」をクリックします。今回はT_支店別売上管理テーブルを選択します。

対象テーブル(クエリ)の選択

行見出しにするフィールドを選択する

行見出し(縦軸)として使用するフィールドを選択します。
今回の例では 売上日フィールド を選択します。選択すると、画面下部のサンプル表示に縦軸として反映されますので、「次へ」をクリックします。

基本的に縦軸には、今後もデータが追加されるフィールドを指定します支店は基本的に固定されていることに対して、売上日は今後も追加されていくため、行は売上日となります。

なお、行見出しは最大3つまで設定できます。今回の説明では1つだけですが、複数設定することで、より細かく複雑なクロス集計も行えるようになります。
ただし、行見出しが増えるほど処理が重くなる場合がありますので、用途に応じて設定数は調整するのがおすすめです。

行見出しの選択例

列見出しにするフィールドを選択

列見出し(横軸)として使用するフィールドを選択します。
今回の例では支店フィールド を選択します。選択すると、画面下部のサンプル表示に横軸として反映されますので、「次へ」をクリックします。

列見出しの選択例

集計する値のフィールドを選択

集計元の値となるフィールドと、集計方法を選択します。
今回のサンプルでは売上金額のみが残っていますので、集計する値はそのまま選択されています。
そして、集計方法は合計を選択します。

集計する値の選択例

表示形式の調整

データシートビューに切り替えて結果を表示してみます。

クロス集計クエリの集計結果

今回は、月別・支店別の売上合計を確認したいのですが、縦軸は売上日で日付単位の集計となっています。これを月単位に変更します。

作成したクロス集計クエリをデザインビューで開きます。
売上日付フィールドに対してMonth関数を用いて、日付から月部分のみ抜き出した売上月フィールドにします

実行(結果確認)

再度データシートビュー切り替えてみます。これで希望どおりのクロス集計クエリが完成しました。

方法②:デザインビューで設定する(慣れている人向け)

メニューから [作成]→[クエリデザイン]

メニューから「作成」→「クエリデザイン」で空のクエリデザインビューを開きます。

対象テーブル(クエリ)を追加後、集計対象フィールドを追加する

クロス集計を行う対象のテーブル(またはクエリ)をフィールドリストにドロップ&ドラックで追加します。
その後、追加した集計対象のフィールドを、デザイングリッドに追加します。

クエリの種類を「クロス集計」に切り替える

メニュー「クエリデザイン」から、クエリの種類を「クロス集計」に切り替えます。
切り替えることにより、クエリグリットに「集計欄」と「行列の入れ替え欄」が追加されます

行見出し・列見出し・値フィールドを指定

各欄を以下のとおり設定します。

  • 行見出し:縦方向に並べたい項目(売上月:Month([売上日])&"月"
  • 列見出し:横方向に展開したい項目(支店
  • :集計したい数値(売上金額

実行(結果確認)

ウィザードと同じ結果で、クロス集計クエリを作成することができました。

慣れるまではウィザードを使いながら、最終的にはデザインビューで一から作成できるようになれば、色々応用が効くのでおすすめです。

応用テクニック

列と行を入れ替える

デザインビューで、クロス集計クエリの設定方法が分かっていれば、行と列を入れ替えることも簡単にできます。

このようにちょっとした変更で、行(支店)と列(売上月)に変更することができます

クロス集計で空欄を「0」に置き換える方法

前項で作成したクロス集計クエリを見ると、値が存在しない部分は空欄として表示されます。
例として、12月の大阪支店や11月の名古屋支店が該当します。

本来であれば、空欄ではなく 「0」 を表示したいところですが、クロス集計クエリでは値が存在しないセルは Nullではなく「行自体が存在しない扱い」 となっています。
そのため、下図のように Nz関数で置き換えようとしても変換されません。

空欄を0に置き換えるには、クロス集計をそのまま編集するのではなく、2段階でクエリを作成する方法で可能となります。手順は次の通りです。

最初に作成したクロス集計クエリを元に、新しい選択クエリを作成します。
選択クエリのデザイングリッドに、クロス集計クエリのフィールドを追加し、Nz関数で囲みます。

選択クエリにフィールドを追加した時点で、空欄はNullと認識されますので、Nz関数により0への変換が行わます。

最終結果では、このように空欄だった部分が 「0」 として表示されます。

まとめ

クロス集計クエリは、データを俯瞰して分析することができる便利な機能です。一見むずかしそうに見えますが、手順さえ覚えればとても簡単です。

  • 行見出し・列見出し・値の3つを意識する
  • NULLや集計の設定に気をつける
  • あまり複雑化させない

この3点を押さえれば、スムーズにクロス集計クエリを作成できるようになると思います。


・Accessで業務用ツールを作ってみたいけど、なかなか時間がとれない。
・先輩が作った既存のツールを改修したいけど難しい…。
そのような場合には、私がみなさまの代わってカタチにいたします。ぜひ作成サービス
をご利用ください。

オーダーメイドのAccessツールをお作りします ふんわりした相談からでもOKです! | ココナラ
Accessに関する様々なご要望に対応いたします。日頃このようなお悩みやありませんか?✅業務用ツールの新規開発や改修が必要 ✅既存のAccessツールが使いに...

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