残業を減らす!Officeテクニック

エクセルのクロス集計表がピボットテーブルで思うように集計できない! 簡単な解決法

クロス集計表を集計しやすい一覧形式へ変換してみよう

 商品を縦方向、月別や年度別の数値を横方向に並べたクロス集計表は、実績を確認したり、報告資料として印刷したりする時に見やすい形式です。以下の表では、商品別の売上を1月から6月まで横方向に並べています。

商品ごとの月別売上を横方向に並べたクロス集計表

 しかし、この表を元にピボットテーブルを作成すると、[1月][2月][3月]といった月が、独立したフィールドとして扱われます。そのため、月を行に並べたり、特定の月だけを絞り込んだりする操作には向いていません。

先ほどのクロス集計表を元にピボットテーブルを作成すると、各月が独立したフィールドとして扱われる

 ピボットテーブルで柔軟に集計するには、[商品分類][商品名][月][売上]のように、同じ種類の値を1つの列へまとめて1データ1行の一覧表が適しています。

 だからといって、手作業でコピー&ペーストを繰り返す必要はありません。「Power Query」の機能を利用すれば、横方向に広がったクロス集計表を一覧形式の表へ変換できます。

クロス集計表をPower Queryに取り込む

 まずは、クロス集計表をPower Queryへ取り込みましょう。表内のセルを選択して、[テーブルまたは範囲から]をクリックするだけです。

 なお、Power Queryに取り込む時点で、元のセル範囲は「テーブル」に変換されます。ただし、Power Query上で行った処理によって元データの内容が書き換えられることはありません。元データを残したまま、変換後の表を別のワークシートへ出力できます。

表内のセルを選択して、[データ]タブの[テーブルまたは範囲から]をクリックする
表の範囲と見出しの設定を確認して、[OK]をクリックする
クロス集計表のデータがPower Queryに取り込まれた

月別の列を縦方向に並べる

 Power Queryエディターの[その他の列のピボット解除]を利用して、横方向に並んでいる[1月]から[6月]までの列を、縦方向に並ぶ形式へ変換します。

 [その他の列のピボット解除]は、“選択していない”列の見出しと値を縦方向のデータへ変換する機能です。後から[7月]や[8月]の列が追加された場合も、クエリを更新すれば、新しい列が変換対象になります。この例では、「商品名」列と「商品分類」列を変換せずに残します。

[Ctrl]キーを押しながら「商品分類」列と「商品名」列を選択する
[変換]タブにある[列のピボット解除]-[その他の列のピボット解除]をクリックする
「1月」から「6月」の列が縦方向に並び、「属性」列と「値」列に変換された

 自動的に付けられた[属性]と[値]という列名では、データの内容が分かりにくいため、変更しておきましょう。列見出しをダブルクリックします。

「属性」列の見出しをダブルクリックすると、編集できる状態になる
「月」と入力して[Enter]キーを押す
同様に「売上」と修正しておく

 また、列名の左側に表示されているデータ型のアイコンを確認しておきます。[商品名][商品分類][月]が[テキスト](ABCのアイコン)、[売上]が[整数](123のアイコン)になっていれば問題ありません。

 データ型が正しく設定されていないと、売上金額が数値として集計されないことがあります。変更する場合は、アイコンをクリックして適切なデータ型を選択してください。ここでは問題ないので、Power Queryエディターを閉じて、新しいワークシートへ読み込みます。

データ型を変更する場合は、列見出しの左側のアイコンをクリックする。問題なければ変更する必要はない
[ホーム]タブにある[閉じて読み込む]をクリックする
一覧形式に変換された表が、テーブルとして新しいワークシートに表示される

ピボットテーブルで集計軸を切り替える

 変換後の一覧表を使って、ピボットテーブルを作成してみましょう。テーブル内のセルを選択して、[ピボットテーブルで集計]をクリックします。ピボットテーブルを作成した後は、フィールドをドラッグして、目的に応じた切り口で集計できるようになります。

 ピボットテーブルの作成方法については、こちらの記事
も参照してください。

変換後のテーブル内のセルを選択して、[ピボットテーブルで集計]をクリックする
テーブルの範囲は自動的に判定される。[OK]をクリックする
ピボットテーブルが作成された。[商品名][商品分類][月][売上]のフィールドを自由に配置できる

クエリを再利用する

 元のクロス集計表に[7月][8月]の列を追加した場合は、クエリとピボットテーブルを順番に更新するだけです。Power Queryエディターを開いて、同じ変換操作をやり直す必要はありません。

「7月」「8月」のデータを追加した
Power Queryで一覧形式に整えた表を選択して、[クエリ]タブにある[更新]をクリックする
7月と8月のデータが追加された
ピボットテーブル内のセルを選択する。[ピボットテーブル分析]タブにある[更新]をクリックする
7月と8月のデータが追加された

 Power Queryで変換手順を設定しておけば、元のクロス集計表にデータを追加した時も、クエリを更新するだけで一覧表へ変換できます。定期的に同じ形式の表を更新するようなケースでは、手作業で並べ替えずに済むよう、変換手順を登録しておくと便利です。