シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理
「パワク12本目」
Power Query(M言語)の問題と解答・解説
パワク12本目
シート関数の、
COUNTIFS
SUMIFS
MAXIFS
これらと同じ結果をPower Queryで行ってください。
元データは「テーブル1」とします。

E2=SUMIFS(テーブル1[値列],テーブル1[キー列],テーブル1[@キー列])
F2=MAXIFS(テーブル1[値列],テーブル1[キー列],テーブル1[@キー列])

解答コード

let
ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
入力TBL = Table.TransformColumnTypes(ソース,{{"キー列", type text}, {"値列", Int64.Type}}),
追加COUNTIFS = Table.AddColumn(入力TBL, "COUNTIFS",
each let _item = [キー列] in List.Count(Table.SelectRows(入力TBL, each [キー列] = _item)[キー列])),
追加SUMIFS = Table.AddColumn(追加COUNTIFS, "SUMIFS",
each let _item = [キー列] in List.Sum(Table.SelectRows(入力TBL, each [キー列] = _item)[値列])),
追加MAXIFS = Table.AddColumn(追加SUMIFS, "MAXIFS",
each let _item = [キー列] in List.Max(Table.SelectRows(入力TBL, each [キー列] = _item)[値列]))
in
追加MAXIFS
GUI操作での作成
以下では、同様の結果を得るためのGUI操作での作成になります。
クエリ名は「テーブル1」とします。
グループ化します。




それぞれ「キー列」を選択します。



let
ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
変更された型 = Table.TransformColumnTypes(ソース,{{"キー列", type text}, {"値列", Int64.Type}})
in
変更された型
テーブル1T
let
ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
変更された型 = Table.TransformColumnTypes(ソース,{{"キー列", type text}, {"値列", Int64.Type}}),
グループ化された行 = Table.Group(変更された型, {"キー列"}, {{"COUNTIFS", each Table.RowCount(_), Int64.Type}, {"SUMIFS", each List.Sum([値列]), type nullable number}, {"MAXIFS", each List.Max([値列]), type nullable number}})
in
グループ化された行
マージ1
let
ソース = Table.NestedJoin(テーブル1, {"キー列"}, テーブル1T, {"キー列"}, "テーブル1T", JoinKind.LeftOuter),
#"展開された テーブル1T" = Table.ExpandTableColumn(ソース, "テーブル1T", {"COUNTIFS", "SUMIFS", "MAXIFS"}, {"テーブル1T.COUNTIFS", "テーブル1T.SUMIFS", "テーブル1T.MAXIFS"})
in
#"展開された テーブル1T"
List.Count , List.Sum , List.Max
List.Sum(list as list, optional precision as nullable number) as any
List.Max(list as list, optional default as any, optional comparisonCriteria as any, optional includeNulls as nullable logical) as any
List.Sumリスト内のnull以外の値の合計を返します。
List.Maxリスト内の最大の項目が返されます。
オブションはあまり必要性はないと思いますが、詳細はについてはLearnを参照してください。
複数キーのサンプル
一応SUMIFSと書いていますし複数キーのサンプルも掲載しておきます。



let
ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
入力TBL = Table.TransformColumnTypes(ソース,{{"キー列", type text}, {"値列", Int64.Type}}),
追加SUMIFS = Table.AddColumn(入力TBL, "SUMIFS",
each let _item = [キー列],_item2 = [キー2列]
in List.Sum(Table.SelectRows(入力TBL, each [キー列] = _item and [キー2列] = _item2)[値列]))
in
追加SUMIFS
合計SUMIFSの部分だけのサンプルです。
複数条件をandで結ぶだけになります。
他も同様になりますので、やってみてください。
同じテーマ「PowerQuery(M言語)入門」の記事
別ブックの最終シートの取り込み
列数不定のCSVの取り込み
CSVのA列が日付の行だけを取り込む
A列のヘッダー名を変更する
「売上」が数値の行のみ取り込む
2つのテーブルのマージ
グルーブ内の最小・最大
グルーブ内の最小・最大
有効な最新単価の取得
新旧マスタの差異比較
シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理
新着記事NEW ・・・新着記事一覧を見る
第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方
|生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する!
|生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門
- ホーム
- その他
- PowerQuery(M言語)入門
- シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。