目次
概要
本記事では、Power Query(M 言語)の Table.Group 関数を用いて、担当者ごとの受注件数および数量合計を取得する手順を解説いたします。クエリに集計処理を組み込んでおくことで、データ更新時にも自動で再計算され、手作業による集計ミスを防止できます。
前提条件
項目 | 内容 |
---|---|
Excel バージョン | Microsoft 365 または 2016 以降 |
サンプルテーブル名 | invoice_header |
追加アドイン | 不要(標準機能のみ) |
サンプルコード(M 言語)
let
// ワークブック内のテーブルを取得
wbTables = Excel.CurrentWorkbook(),
// 伝票ヘッダーを取得
headerTbl = wbTables{[Name = "invoice_header"]}[Content],
// 担当者別に件数と数量合計を計算
groupedTbl = Table.Group(
headerTbl,
{"SalesRep"}, // 集計キー
{
{"OrderCount", each Table.RowCount(_), Int64.Type},
{"TotalUnits", each List.Sum([Units]), Int64.Type}
}
)
in
groupedTbl
コード解説
Excel.CurrentWorkbook()
でワークブックに含まれるテーブルを一覧取得いたします。Table.Group
の第 2 引数にグループ化する列{"SalesRep"}
を指定し、第 3 引数で集計内容をリスト形式で定義しております。Table.RowCount(_)
とList.Sum([Units])
を使い、件数と数量合計を計算しています。
応用ポイント
- 金額合計を追加する場合
集計リストに{"TotalAmount", each List.Sum([Amount]), Currency.Type}
を追加すると対応できます。 - 複数キーでの階層集計
月別集計を併用したい場合は、キーを{"SalesRep", "InvoiceMonth"}
とし、事前に月列を作成してください。 - 集計後に詳細行を保持
元データを残したまま集計値を参照したい場合は、Table.NestedJoin
で結合し、展開する方法が便利です。
よくある質問
質問 | 回答 |
---|---|
集計列を後から並べ替えたい場合は。 | Table.ReorderColumns を使用すると列の並びを自由に変更できます。 |
データ量が増えると処理が遅くなりますか。 | 数十万行規模までは問題ないことが多いですが、不要な列を事前に削除しておくとパフォーマンスが向上します。 |
まとめ
Table.Group 関数を活用すると、シートに数式を配置せずに担当者別集計を自動化できます。まずは本サンプルを実行し、集計結果が期待どおりに表示されることをご確認ください。業務要件に合わせてキー列や集計内容を変更し、さらなる分析の効率化にお役立ていただけます。