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

Power Query按ID分组未合并同ID行的问题及解决需求

Power Query按ID合并行并取最后一行Name的解决方案

我有如下结构的表格,尝试用Power Query的Group By功能按ID合并数据,但因为Name字段值不同,合并后还是多行。需求是:同一ID的数据合并为一行,Name字段取该ID对应最后一行的名称,各销售列合并非空数值。

输入表格

IDNameQ1 SalesQ2 SalesQ3 SalesQ4 Sales
A1Demo100200300
A1Demo1400

期望输出表格

IDNameQ1 SalesQ2 SalesQ3 SalesQ4 Sales
A1Demo1100200300400

原Power Query代码

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"ID"}, {{"All", each _, type table [ID=nullable text, Name=nullable text, Q1 Sales=nullable number, Q2 Sales=nullable number, Q3 Sales=nullable number, Q4 Sales=nullable number]}}),
#"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Name", "Q1 Sales", "Q2 Sales", "Q3 Sales", "Q4 Sales"}, {"Name", "Q1 Sales", "Q2 Sales", "Q3 Sales", "Q4 Sales"})
in
#"Expanded All"

原代码仅将同ID的行打包成子表,展开后仍保留原始多行,未做字段级聚合,因此无法实现合并效果。

修改后的Power Query代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"ID"}, {
        {"Name", each List.Last([Name]), type nullable text},
        {"Q1 Sales", each List.Sum([Q1 Sales]), type nullable number},
        {"Q2 Sales", each List.Sum([Q2 Sales]), type nullable number},
        {"Q3 Sales", each List.Sum([Q3 Sales]), type nullable number},
        {"Q4 Sales", each List.Sum([Q4 Sales]), type nullable number}
    })
in
    #"Grouped Rows"

关键修改说明

在Table.Group中针对每个字段单独设置聚合规则:

  • Name字段:用List.Last([Name])直接提取分组内最后一行的Name值
  • 各销售字段:由于每个ID对应的销售列仅存在一个非空数值,List.Sum会自动忽略空值,直接得到有效数值;若需处理多值场景,可根据需求替换为List.Max或List.Combine等函数。

内容的提问来源于stack exchange,提问作者Kushal Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:26:22