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

如何用Excel Power Query生成逐年累计值列?

需求:Excel Power Query/VBA实现特定数据计算与透视

问题概述

我有对应输入数据(见配图),需要通过Excel的Power Query或VBA实现目标输出(见配图),计算规则以Comment列说明为准。目前编写的Power Query代码仅能实现A列求和透视,无法满足实际需求,现寻求可行解决方案。

当前Power Query代码

let
    Source = Excel.CurrentWorkbook(),
    #"Filtered Rows" = Table.SelectRows(Source, each ([Name] = "ABC")),
    #"Expanded Content" = Table.ExpandTableColumn(#"Filtered Rows", "Content", {"Name", "Year", "A", "A+1 year", "Expected const A (A >= 2 years)"}),
    #"Grouped Rows (Year, Name)" = Table.Group(#"Expanded Content", {"Name", "Year"}, {{"A", each List.Sum([Value]), type nullable number}}),
    #"Sorted Rows" = Table.Buffer(Table.Sort(#"Grouped Rows (Year, Name)",{{"Year", Order.Ascending}})),
    #"Grouped Rows" = Table.Group(#"Sorted Rows", {"Name"}, {{"Data", each let a=Table.AddIndexColumn(_, "Index", 0, 1) in Table.AddColumn(a, "Accumulated A", each List.Sum(List.FirstN(a[Value],[Index]+1))) , type table }}),
    #"Expanded Data" = Table.ExpandTableColumn(#"Grouped Rows", "Data", {"Year", "A"}, {"Name", "Accumulated A"}),
    #"Pivoted Column" = Table.Pivot(#"Expanded Data", List.Distinct(#"Expanded Data"[Name]), "Name", "Accumulated A", List.Sum),
    #"Filled Down" = Table.FillDown(#"Pivoted Column", List.RemoveFirstN(Table.ColumnNames(#"Pivoted Column"),1)),
    #"Demoted Headers" = Table.Transpose(Table.DemoteHeaders(#"Filled Down")),
    #"Promoted Headers" = Table.PromoteHeaders(#"Demoted Headers", [PromoteAllScalars=true]) 
in #"Promoted Headers"

当前代码局限

当前代码仅能完成A列求和并生成透视表(见配图),无法实现Comment列定义的计算规则,不符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:02:57