You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel Power Query中按多字段分组提取列的最大值?

在Excel Power Query中实现多列分组并计算最大值

你需要的是对应SQL GROUP BY Year,month,name 并聚合MAX(qty)的功能,Power Query中可以通过可视化界面操作或编写M代码两种方式实现,以下是具体步骤:

一、可视化界面操作(适合新手)

  1. 将原表加载到Power Query:
    选中你的数据区域,点击Excel顶部菜单栏的「数据」→「从表格/区域」,确认弹窗后进入Power Query编辑器。
  2. 执行分组操作:
    点击编辑器顶部的「转换」→「分组依据」,在弹出的窗口中选择高级模式。
  3. 设置分组与聚合规则:
    • 依次添加3个分组列:点击「添加分组」,分别选择Year、month、name,操作均选择「分组依据」;
    • 添加聚合列:点击「添加聚合」,新列名输入MaxQty,操作选择「最大值」,列选择qty;
  4. 调整列名(匹配期望输出):
    右键点击name列,选择「重命名」,改为product;
  5. 保存结果:
    点击「关闭并上载」,将处理后的表格导入Excel。

二、直接编写M代码(适合高效操作)

如果熟悉Power Query的M语言,可以直接在编辑器的「高级编辑器」中替换代码,假设你的原表在Excel中名为Table1,代码如下:

let
    源 = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    按多列分组并计算最大值 = Table.Group(源, {"Year", "month", "name"}, {{"MaxQty", each List.Max([qty]), type number}}),
    重命名列 = Table.RenameColumns(按多列分组并计算最大值,{{"name", "product"}})
in
    重命名列

代码说明:

  • Table.Group是Power Query实现分组聚合的核心函数,对应SQL的GROUP BY:
    • 第一个参数:要处理的源表;
    • 第二个参数:分组列的列表(对应SQL中GROUP BY后的字段);
    • 第三个参数:聚合规则列表,格式为{"新列名", 聚合逻辑, 数据类型},这里用List.Max([qty])计算分组内的最大数量;
  • Table.RenameColumns用于将name列改为product,匹配你的期望输出格式。

补充说明

你之前尝试的List.Distinct(Table1[Year])仅能实现单列去重,无法处理多列分组和聚合计算,而Table.Group才是Power Query中对应SQL分组聚合场景的标准方案。

内容的提问来源于stack exchange,提问作者Milligator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:12:20