如何在Excel Power Query中保留多列记录的最新版本
Excel Power Query 保留订单项最新版本实现方案
方案1:图形化分组操作(无需手动编写复杂M代码)
- 将数据集加载到Power Query编辑器后,点击顶部「转换」选项卡,选择「分组依据」
- 在弹出的配置窗口选择「高级」模式:
- 第一次添加分组列:字段选
Order,操作选「分组」 - 点击「添加分组」,字段选
Item,操作选「分组」 - 新增聚合列:新列名填
分组行,操作选「所有行」,点击「确定」
- 第一次添加分组列:字段选
- 生成分组表后,点击顶部「添加列」选项卡,选择「自定义列」,输入公式:
Table.Max([分组行], "Version"),点击确定 - 点击自定义列右上角的扩展箭头,取消勾选重复的
Order、Item字段,仅保留需要的Version、Qty、Price等字段,点击确认即可得到最终结果
方案2:M函数直接筛选(适合小体量数据集,操作更快)
- 选中当前查询,打开「高级编辑器」,在现有步骤的末尾新增一步,参考公式如下:
= Table.SelectRows(替换为上一步的步骤名称, (current) => current[Version] = List.Max(Table.SelectRows(替换为上一步的步骤名称, (each) => each[Order] = current[Order] and each[Item] = current[Item])[Version]))
- 替换公式中两处「替换为上一步的步骤名称」为你的查询上一步的实际步骤名(可在右侧查询设置的应用步骤列表里查看),点击完成即可
注意事项
- 操作前请确认
Version字段为数字类型,如果是文本格式需要先转换为数字,否则会按文本排序规则取最大值,导致结果错误 - 数据量超过1万行时优先选择方案1,分组运算的效率远高于逐行匹配的方案2
内容的提问来源于stack exchange,提问作者DM-BUSA
相关产品推荐
相关产品推荐

