
今回は、M関数を使用して「SUMIFS関数」と同じ「複数条件付き合計処理」をPower Queryエディタ(以降エディタ)上で行う方法を解説したいと思います
M言語を学ぶ目的の一つは、Power Queryのメリットである「行列一括で処理を行う」とワークシートでの「細かい操作・計算」を両立させることです
SUMIFS関数は細かい計算を行う関数なので、M言語の良さを学ぶという点で凄くいいテーマです!
特に記事の中で出てくる「別クエリのテーブル化/入れ子のテーブル作成」と「Table.Select関数による特定の行抽出」はM言語の醍醐味の一つといっていいと思います!
記事の最期にはサンプルファイルも付いていますので、ぜひ、後で実際に手を動かしてみて下さい!
目次
今回は下の図のように、2つのテーブル/A列からとF列からを使用します
画面左は元データとなっており、年度は2016年と2017年の2年分が含まれています
テーブル名は「AllData」で設定してあります

画面右はH列に「SUMIFS関数」が入力されており、F列とG列にSUMIFS関数の条件が設定されています
例えば、H2セルには297,628と表示されています
H2セルは画面左の「AllData」テーブルから「2017年度」「軽自動車」の2つの条件を満たす行を抽出し、売上金額の合計値を集計しています
こちらのテーブル名は「Condition」で設定されています
今回は、上のSUMIFS関数と同じ計算をエディタ上で行い、エクセルシート上に読込めるようにします

上のGIF画像では、「Condition」テーブルの下に今回作成するクエリの内容を読み込んであります
「Condition」テーブルの2行目の年度を変え、更新を押したら「Condition」テーブルの下に読込んであるクエリの内容も変わっています
今回のポイント
別クエリのテーブル化/入れ子のテーブル作成
下の画像はテーブル「Condition」のクエリです
一番右の列にある列/詳細はエディタ上でカスタム列・作成画面を使用して追加しました
Conditionのテーブルの中に、別なテーブルの内容が入れ子で作成されています

画面下にあるように、詳細列の各行には「AllData」テーブルの内容がそれぞれ紐づけられています
この各行に紐づけたテーブルから①条件に合う行のみを抽出し、②合計値を出します
2つのM関数の使用
今回の記事では2つM関数を使用します
①条件に合う行のみを抽出
書き方:Table.SelectRows(テーブル名, 条件)
②合計値を抽出
書き方:List.Sum(リスト名)
カスタム関数の使用
上記のM関数/Table.SelectRowsの第二引数/条件においては、カスタム関数を使用します
カスタム関数を作成する要領としては、下の図のような要領です
(a,X,b) =>ax + b
まず、()内において式に使用するもの/a,X,bを宣言します
その後、実際に宣言した内容を使用した数式を示します
では、今回行いたい事とポイントを確認したところで本格的な解説を始めたいと思います
続きを読む Power Queryエディタ上で複数条件付き合計処理~M関数使用