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

Power Query中如何按动态列名实现分组求和?

在Power Query中按动态列名实现分组求和

你可以通过动态生成分组聚合规则来实现,不用手动写死每一列的求和逻辑,完美适配列名每月变动的场景。具体实现方式如下:

  1. 先用List.Difference筛选出所有需要求和的动态列(排除固定分组列Bütçe Kodu和无需求和的Bütçe Kalemi)
  2. 将这些动态列转换成Table.Group所需的聚合项格式
  3. 把固定聚合项(比如你的Sum Total)和动态生成的聚合项合并,传入分组函数执行操作

完整代码如下:

let
    Source = #"Cost Summary",
    // 获取所有需要求和的动态列(排除固定列)
    x = List.Difference(Table.ColumnNames(Source),{"Bütçe Kodu", "Bütçe Kalemi"}),
    // 为每个动态列生成对应的求和聚合规则
    DynamicAggregations = List.Transform(x, each {"sum " & _, each List.Sum([_]), type nullable number}),
    // 合并固定聚合项与动态聚合项
    AllAggregations = List.Combine({{{"Sum Total", each List.Sum([Total Cost]), type number}}, DynamicAggregations}),
    // 执行分组求和
    #"Grouped Rows" = Table.Group(Source, {"Bütçe Kodu"}, AllAggregations)
in
    #"Grouped Rows"

核心逻辑说明

  • List.Transform(x, ...):遍历动态列列表x,自动为每个列生成求和规则,命名格式和你手动写的sum 2023.08保持一致
  • List.Combine:把固定的Sum Total求和项和动态生成的规则合并成完整的聚合列表,确保分组时同时包含固定项和所有动态列的求和结果
  • 后续新增月份列时,代码会自动识别并加入求和逻辑,完全不用手动修改

内容的提问来源于stack exchange,提问作者Umut K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:40:12