如何在Power Query中计算同年度不同类型行的数值之和?
在Power Query中实现年度分组计算(含自定义函数)
方法一:先转成宽表(匹配你的思路)
这就是你提到的类透视操作,完全可以实现:
- 加载原始数据到Power Query后,选中Year列
- 点击顶部菜单栏的「转换」→「透视列」
- 在弹窗中:
- 值列选择
Value - 列名选择
Type - 聚合函数选择「不要聚合」(因为每个Year+Type组合唯一,无重复值)
- 值列选择
- 确定后即可得到目标宽表:
Year A B 2022 13 5 2023 11 36 2024 9 22 - 后续可添加自定义列完成计算:点击「添加列」→「自定义列」,输入公式:
[A] + [B],重命名列即可。
方法二:直接分组求和(更高效,无需转宽表)
如果只需要最终的年度合计,不用转宽表,直接分组即可:
- 加载数据后,选中Year列
- 点击「转换」→「分组依据」
- 在分组设置中:
- 分组依据保持
Year - 新列名设为
Value A + Value B - 操作选择「求和」,列选择
Value
- 分组依据保持
- 确定后直接得到目标表格,一步到位。
进阶:替换为自定义函数
如果需要复杂的自定义计算逻辑(比如A*1.5 + B/2这类),可以通过自定义函数实现:
步骤1:创建自定义函数
在Power Query编辑器中,点击「主页」→「高级编辑器」,在现有代码前添加以下函数定义:
fn_CustomCalculation = (groupData as table) as number => let // 从分组数据中提取A和B的值 valA = Table.SelectRows(groupData, each [Type] = "A")[Value]{0}, valB = Table.SelectRows(groupData, each [Type] = "B")[Value]{0}, // 自定义计算逻辑,可按需修改 customResult = valA * 1.5 + valB / 2 in customResult
步骤2:调用函数分组计算
回到分组依据操作:
- 选中Year列,点击「分组依据」
- 分组依据选
Year,新列名自定义(比如Custom Result) - 操作选择「自定义」,输入公式:
fn_CustomCalculation([All Rows]) - 确定后即可得到自定义计算的结果。
关键说明
Power Query是基于集合/列表操作的,不需要引用特定单元格,通过分组后获取同组内的所有行数据,再筛选、提取对应Type的值即可完成计算,完美解决你提到的“无法引用其他行”的问题。
内容的提问来源于stack exchange,提问作者GoodAnalysis
相关产品推荐
相关产品推荐

