如何在Excel Power Query中按ID分组保留最大值所在行?
Excel Power Query 按JOB_ID分组保留DAY_ID最大值所有行操作步骤
全程可通过界面点击完成,无需编写Python/R脚本,也不需要掌握复杂M语言公式
- 导入数据到Power Query编辑器
选中包含JOB_ID、DAY_ID字段的完整数据源区域,点击Excel顶部「数据」选项卡,选择「从表格/区域」,在弹出的创建表弹窗中勾选「我的表格有标题」,点击「确定」进入Power Query编辑界面。 - 分组计算组内最大值并保留全量明细
点击Power Query顶部「转换」选项卡,选择「分组依据」按钮,在弹出的设置窗口按如下配置:- 选择窗口上方的「高级」模式
- 第一行分组条件:列选择
JOB_ID,保持默认分组规则 - 点击「添加聚合」新增第一个聚合规则:新列名输入
MAX_DAY_ID,操作选择「最大值」,列选择DAY_ID - 再次点击「添加聚合」新增第二个聚合规则:新列名输入
DETAIL_ROWS,操作选择「所有行」 - 点击「确定」完成分组,此时每个
JOB_ID对应一行数据,包含JOB_ID、MAX_DAY_ID、DETAIL_ROWS三列,DETAIL_ROWS列的每个单元格存储了对应JOB_ID下的所有原始行数据。
- 展开明细行
点击DETAIL_ROWS列标题右侧的双向展开箭头,在展开设置中:- 仅勾选
DAY_ID字段(JOB_ID已存在无需重复展开) - 取消勾选「使用原始列名作为前缀」
- 点击「确定」,所有原始行将完整展开,每一行都会附带所属JOB_ID对应的最大DAY_ID值。
- 仅勾选
- 筛选符合要求的行
点击顶部「添加列」选项卡,选择「自定义列」,新列名可填IS_KEEP,自定义列公式输入=[DAY_ID] = [MAX_DAY_ID],点击「确定」。该列会自动返回TRUE/FALSE逻辑值,标记当前行的DAY_ID是否为组内最大值。
点击IS_KEEP列标题右侧的筛选箭头,仅勾选TRUE值后点击确定。 - 清理辅助列导出结果
按住Ctrl选中MAX_DAY_ID、IS_KEEP两个辅助列,右键点击列标题选择「删除」,此时剩余数据即为目标结果。点击Power Query顶部「主页」选项卡,选择「关闭并上载」,结果会自动导出到Excel新工作表。
样例数据校验:按上述步骤处理提供的测试数据,最终输出为JOB_ID 430保留1条DAY_ID=720的行,JOB_ID 530保留1条DAY_ID=620的行,JOB_ID 630保留2条DAY_ID=620的行,完全匹配预期。
内容的提问来源于stack exchange,提问作者ItzCamm
相关产品推荐
相关产品推荐

