如何用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
相关产品推荐
相关产品推荐

