Excel Power Query实现两列无序值组合去重仅保留单条记录
Power Query 实现两列无序值组合去重
核心逻辑:为每一行生成和两列值顺序无关的统一标识,基于该标识去重即可自动过滤AB/BA这类顺序颠倒的重复组合,操作步骤如下:
- 将原始数据导入Power Query编辑器,确认待处理的两列列名为
Header1、Header2,提前将两列数据类型统一设置为文本,避免排序异常
- 将原始数据导入Power Query编辑器,确认待处理的两列列名为
- 点击「添加列」选项卡-「自定义列」,在公式框输入以下M公式,生成去重用的辅助标识:
公式作用:自动把当前行的两个值按固定规则排序后拼接成字符串,不管是(A,B)还是(B,A),排序后拼接结果都是Text.Combine(List.Sort({[Header1], [Header2]}), "|")A|B,同一组无序值会生成完全相同的标识- 选中刚生成的自定义辅助列,点击「删除重复项」,所有标识相同的重复组合只会保留任意1条
- 选中辅助列,右键选择「删除」,剩余的表就是你需要的结果:仅保留(A,B)、(B,C)两条唯一无序组合记录
如果需要直接套用完整M代码,可以在高级编辑器里替换对应内容(注意把源步骤里的表名改成你自己的实际表名):
let 源 = Excel.CurrentWorkbook(){[Name="原始表"]}[Content], 更改列类型 = Table.TransformColumnTypes(源,{{"Header1", type text}, {"Header2", type text}}), 添加去重辅助列 = Table.AddColumn(更改列类型, "组合标识", each Text.Combine(List.Sort({[Header1], [Header2]}), "|")), 按辅助列去重 = Table.Distinct(添加去重辅助列, {"组合标识"}), 删除辅助列 = Table.RemoveColumns(按辅助列去重,{"组合标识"}) in 删除辅助列
该方法不需要额外写两列值大小判断的分支逻辑,对所有两列文本/数值类的无序组合去重都生效,后续新增的其他顺序颠倒的重复组合也能自动识别过滤,不需要调整规则。
内容的提问来源于stack exchange,提问作者Trioptre2
相关产品推荐
相关产品推荐

