【Excel】パワークエリで大量データを軽くする|グループ化で行数を減らして集計する

Excel・業務効率化

以前使っていた集計のExcelは、ローデータをそのまま貼り付けて、SUMIFSで集計していました。データは1年分で約20万行あり、店舗を切り替えるたびに、ステータスバーに「計算中」と出て止まっていました。

そこで、パワークエリでローデータを店舗・月・カテゴリごとにまとめてから集計するようにしたところ、「計算中」で止まらなくなりました。

この記事では、パワークエリの「グループ化」で行数を減らして、集計を軽くする方法を紹介します。なお、この記事の表や手順は説明のために作ったもので、実際に使っているExcelとは作りが違います。例の数字も架空です。

例として使うデータ

「売上データ」というテーブルに、このようなローデータが入っているとします。

日付店舗カテゴリ商品数量金額担当者
10/1本店アイス商品A51,500田中
10/5本店アイス商品B21,000佐藤
10/8本店菓子商品C3600田中
10/9本店菓子商品D2800佐藤
10/3駅前店アイス商品A41,200鈴木
10/6駅前店アイス商品B1500鈴木
11/2本店アイス商品A3900田中

店舗・月・カテゴリごとの金額の合計を出したい場合、商品や数量、担当者の列は使いません。同じ店舗・月・カテゴリの行が何行もあるので、まとめれば行数を大きく減らせます。

ローデータは、あらかじめテーブルにしておきます。テーブルにする方法は、こちらの記事で紹介しています。

【Excel】テーブルは設定するだけ|一手間で増えるメリットと注意点
Excelのテーブルは、設定するだけで式の自動入力や範囲の自動拡張など、便利なことがたくさん増えます。設定方法とメリット、使っていて気づいた注意点を紹介します。

パワークエリで読み込む

売上データのテーブルの中のセルを選んで、[データ]タブ→[テーブルまたは範囲から]を押します。パワークエリの画面(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列の検索キーから探します。検索キーの列を用意する理由は、こちらの記事で紹介しています。

【Excel】XLOOKUPで複数条件を検索する|作業列なしと検索キー列の使い分け
XLOOKUPで店舗と商品のような複数の条件を検索する方法を紹介します。作業列なしで式の中で条件をつなげる方法と、検索キーの列を用意する方法の使い分けも書いています。

データを更新する

新しいデータが入ったら、売上データのテーブルにローデータを貼り付けて、[データ]タブ→[すべて更新]を押すだけです。月の列の追加や列の削除、グループ化は、パワークエリが同じ手順でやり直してくれます。

実際にどう変わったか

去年1年分のデータは約20万行ありましたが、パワークエリでまとめると約6,000行になりました。

店舗を切り替えても、「計算中」で止まらなくなりました。

まとめ

  • ローデータをそのままSUMIFSで集計すると、データが多いと重くなる
  • パワークエリで不要な列と行を削除し、グループ化でまとめると、行数を大きく減らせる
  • まとめたテーブルに対してSUMIFSやXLOOKUPで集計すれば、計算が軽くなる
  • 次の月からは、ローデータを貼り付けて[すべて更新]を押すだけ

ローデータが大きい場合は、ローデータのファイルと集計のファイルを分けると、集計のファイルが軽くなり、開くのも速くなります。この方法と、店舗ごとの計の下に全店の合計を足す方法は、別の記事で紹介する予定です。

パワークエリを使い始めたきっかけは、こちらの記事に書いています。

【Excel】私のExcelの3種の神器はXLOOKUP・テーブル・パワークエリ|重い資料が固まらなくなった話
Excelでデータ集計をしている私が、職場の人が使う資料に必ず使っているXLOOKUP・テーブル・パワークエリの3つを紹介します。使い始めたきっかけと、重い資料が「計算中」で止まらなくなった体験談です。

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