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

PowerQuery合并重复项后多行信息合并为单行的实现方法咨询

在Power Query中合并同一Person的多行分散信息为单行

这问题我之前处理过,用Power Query的分组+自定义列就能轻松搞定,给你两种实现方式,选你顺手的来:

方式一:可视化界面操作(适合不想写代码的同学)

  • 选中你的数据源中的Person列,切换到转换选项卡,点击分组依据按钮
  • 在弹出的分组窗口里:
    • 「分组依据」选择Person
    • 「新列名」可以填CombinedData,「操作」选择所有行,点击确定
  • 此时你的表会变成两列:Person和CombinedData(后者是每个Person对应的所有原始行的嵌套表)
  • 点击添加列选项卡 → 自定义列,在公式框里输入:
    List.RemoveNulls([CombinedData][Member]){0}?
    
    把新列命名为Member,点击确定
  • 重复上一步,添加名为Alum的自定义列,公式改为:
    List.RemoveNulls([CombinedData][Alum]){0}?
    
  • 最后右键点击CombinedData列,选择删除,就得到你想要的目标表了

方式二:直接编写M代码(适合追求效率的同学)

如果你的数据源表名为Source,可以直接把这段代码替换到Power Query的高级编辑器里:

let
    Source = 替换成你的数据源引用,
    // 按Person分组,保留对应所有行
    GroupedRows = Table.Group(Source, {"Person"}, {{"CombinedData", each _, type table [Person=text, Member=text, Alum=text]}}),
    // 提取Member列的非空值,无有效值则返回null
    AddedMember = Table.AddColumn(GroupedRows, "Member", each List.RemoveNulls([CombinedData][Member]){0}?),
    // 提取Alum列的非空值,无有效值则返回null
    AddedAlum = Table.AddColumn(AddedMember, "Alum", each List.RemoveNulls([CombinedData][Alum]){0}?),
    // 删除中间过渡列
    RemovedColumns = Table.RemoveColumns(AddedAlum,{"CombinedData"})
in
    RemovedColumns

原理说明

List.RemoveNulls会把对应列里的空值全部过滤掉,{0}?用来取过滤后的第一个有效值;如果某列所有值都是null(比如示例里的Z),{0}?会返回null,刚好符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:57:39