以前使っていた集計のExcelは、ローデータをそのまま貼り付けて、SUMIFSで集計していました。データは1年分で約20万行あり、店舗を切り替えるたびに、ステータスバーに「計算中」と出て止まっていました。
そこで、パワークエリでローデータを店舗・月・カテゴリごとにまとめてから集計するようにしたところ、「計算中」で止まらなくなりました。
この記事では、パワークエリの「グループ化」で行数を減らして、集計を軽くする方法を紹介します。なお、この記事の表や手順は説明のために作ったもので、実際に使っているExcelとは作りが違います。例の数字も架空です。
例として使うデータ
「売上データ」というテーブルに、このようなローデータが入っているとします。
| 日付 | 店舗 | カテゴリ | 商品 | 数量 | 金額 | 担当者 |
|---|---|---|---|---|---|---|
| 10/1 | 本店 | アイス | 商品A | 5 | 1,500 | 田中 |
| 10/5 | 本店 | アイス | 商品B | 2 | 1,000 | 佐藤 |
| 10/8 | 本店 | 菓子 | 商品C | 3 | 600 | 田中 |
| 10/9 | 本店 | 菓子 | 商品D | 2 | 800 | 佐藤 |
| 10/3 | 駅前店 | アイス | 商品A | 4 | 1,200 | 鈴木 |
| 10/6 | 駅前店 | アイス | 商品B | 1 | 500 | 鈴木 |
| 11/2 | 本店 | アイス | 商品A | 3 | 900 | 田中 |
店舗・月・カテゴリごとの金額の合計を出したい場合、商品や数量、担当者の列は使いません。同じ店舗・月・カテゴリの行が何行もあるので、まとめれば行数を大きく減らせます。
ローデータは、あらかじめテーブルにしておきます。テーブルにする方法は、こちらの記事で紹介しています。

パワークエリで読み込む
売上データのテーブルの中のセルを選んで、[データ]タブ→[テーブルまたは範囲から]を押します。パワークエリの画面(Power Queryエディター)が開きます。
日付から月の列を作る
日付のままでは月ごとにまとめられないので、先に月の列を作ります。
日付の列を選んで、[列の追加]タブ→[日付]→[月]→[月]を選びます。右端に「月」の列が追加され、10、11のように月が入ります。
不要な列と行を削除する
次に、集計に使わない列を削除します。この例では、日付・商品・数量・担当者の列です。残すのは、店舗・カテゴリ・金額・月の4列です。
削除するときは、残す列をCtrlキーを押しながら選んで、右クリック→[他の列の削除]を選ぶのがおすすめです。消す列を選んで削除すると、ローデータに後から列が増えたときに、その列は残ってしまいます。[他の列の削除]なら、選んだ列だけを残すので、万が一列が増えても、パワークエリを直す必要がありません。
集計に使わない行がある場合は、列の見出しの▼から、空白の行や、集計に入れない値のチェックを外します。
店舗・月・カテゴリでグループ化する
[ホーム]タブ→[グループ化]を押して、「詳細設定」を選びます。「基本」のままだと、1つの列でしかグループ化できません。
- グループ化:「店舗」「月」「カテゴリ」(「グループ化の追加」で2つ目、3つ目を足す)
- 新しい列名「金額」、操作「合計」、列「金額」
[OK]を押すと、店舗・月・カテゴリごとに1行にまとまります。
| 店舗 | 月 | カテゴリ | 金額 |
|---|---|---|---|
| 本店 | 10 | アイス | 2,500 |
| 本店 | 10 | 菓子 | 1,400 |
| 駅前店 | 10 | アイス | 1,700 |
| 本店 | 11 | アイス | 900 |
7行が4行になりました。実際のデータでは、同じ店舗・月・カテゴリの行がもっとたくさんあるので、行数は大きく減ります。
A列に検索キーを作る
後でXLOOKUPで検索しやすいように、店舗・月・カテゴリをつなげた検索キーの列を作ります。
[列の追加]タブ→[カスタム列]を押して、新しい列名を「検索キー」にし、次の式を入れます。
[店舗] & "_" & Text.From([月]) & "_" & [カテゴリ]
月は数値なので、Text.Fromで文字に変えてからつなげています。そのままつなぐとエラーになります。
追加した列は右端に入るので、列の見出しを右クリック→[移動]→[先頭へ]で、A列に移します。
| 検索キー | 店舗 | 月 | カテゴリ | 金額 |
|---|---|---|---|---|
| 本店_10_アイス | 本店 | 10 | アイス | 2,500 |
| 本店_10_菓子 | 本店 | 10 | 菓子 | 1,400 |
| 駅前店_10_アイス | 駅前店 | 10 | アイス | 1,700 |
| 本店_11_アイス | 本店 | 11 | アイス | 900 |
シートに書き出して集計する
[ホーム]タブ→[閉じて読み込む]を押すと、まとめた結果が新しいシートにテーブルで書き出されます。
あとは、このまとめたテーブルに対して、SUMIFSやXLOOKUPで集計します。ローデータに対して集計するよりも行数がずっと少ないので、計算が軽くなります。
XLOOKUPで検索するときは、検索値も同じように店舗・月・カテゴリを「_」でつなげて、A列の検索キーから探します。検索キーの列を用意する理由は、こちらの記事で紹介しています。

データを更新する
新しいデータが入ったら、売上データのテーブルにローデータを貼り付けて、[データ]タブ→[すべて更新]を押すだけです。月の列の追加や列の削除、グループ化は、パワークエリが同じ手順でやり直してくれます。
実際にどう変わったか
去年1年分のデータは約20万行ありましたが、パワークエリでまとめると約6,000行になりました。
店舗を切り替えても、「計算中」で止まらなくなりました。
まとめ
- ローデータをそのままSUMIFSで集計すると、データが多いと重くなる
- パワークエリで不要な列と行を削除し、グループ化でまとめると、行数を大きく減らせる
- まとめたテーブルに対してSUMIFSやXLOOKUPで集計すれば、計算が軽くなる
- 次の月からは、ローデータを貼り付けて[すべて更新]を押すだけ
ローデータが大きい場合は、ローデータのファイルと集計のファイルを分けると、集計のファイルが軽くなり、開くのも速くなります。この方法と、店舗ごとの計の下に全店の合計を足す方法は、別の記事で紹介する予定です。
パワークエリを使い始めたきっかけは、こちらの記事に書いています。


