Power Query:如何将重复行的Code列内容移至新列并合并金额
解决Power Query中重复发票的Code拆分与Amount合并问题
操作步骤
1. 导入数据并添加索引列
将数据导入Power Query编辑器后,切换到添加列选项卡,点击索引列 → 从1开始。这一步用来标记同一发票下的记录顺序,保证第一个Code保留在原Code列。
2. 按Invoice分组
切换到转换选项卡,点击分组依据:
- 分组列选择
Invoice - 新列名输入
GroupedData - 操作选择所有行,点击确定。此时每个Invoice对应的多条记录会被打包成一行的列表数据。
3. 添加自定义列处理数据
点击添加列 → 自定义列,命名为ProcessedData,输入以下M代码:
let CodeList = [GroupedData][Code], AmountTotal = List.Sum([GroupedData][Amount]), MainCode = List.First(CodeList), OtherCodes = List.Skip(CodeList, 1) in [ Invoice = [Invoice], Code = MainCode, Code2 = if List.Count(OtherCodes)>=1 then OtherCodes{0} else null, Amount = AmountTotal ]
这段代码的作用是:
- 提取当前分组下的所有Code值
- 计算该发票的总Amount
- 把第一个Code放到
Code列,第二个Code放到Code2列(没有的话留空)
4. 展开并整理数据
点击ProcessedData列右侧的展开按钮,选择所有字段展开,然后删除多余的GroupedData列。最后调整列顺序,就能得到目标格式的结果。
如果你的数据里同一Invoice下有更多Code(比如Code3、Code4),可以修改OtherCodes的处理逻辑,比如用List.Transform生成多个Code列,再展开即可。
内容的提问来源于stack exchange,提问作者Orfevre
相关产品推荐
相关产品推荐

