Power Query中实现上期值相减及合并前预处理方法咨询
Power Query 实现上期值相减计算
核心逻辑
按C.Code分组,组内按FiscalYearPeriod(或日期)升序排序后:
- 组内第一行:计算
0 - Amount - 后续行:计算
当前Amount - 上一行Amount
方法一:分组+自定义列(简洁高效)
- 把数据导入Power Query编辑器,选中
C.Code列,点击开始→分组依据,按以下设置配置:- 分组依据:
C.Code - 新列名:
分组数据 - 操作:
所有行
- 分组依据:
- 点击
分组数据列右侧的展开箭头,选择添加自定义列,粘贴以下公式:let 排序后数据 = Table.Sort([分组数据],{{"FiscalYearPeriod", Order.Ascending}}), 金额列表 = 排序后数据[Amount], 上期金额列表 = List.RemoveLastN(0 & 金额列表, 1), 计算结果 = List.Transform(List.Zip({金额列表, 上期金额列表}), each _{0} - _{1}) in Table.FromColumns(Table.ToColumns(排序后数据) & {计算结果}, Table.ColumnNames(排序后数据) & {"计算列"}) - 点击自定义列的展开箭头,选择展开到新行(或直接展开所有列),替换原表结构。
- 删除冗余的
分组数据列,调整列顺序即可。
方法二:索引列+自合并(直观易理解)
- 导入数据后,按
C.Code和FiscalYearPeriod升序排序。 - 添加索引列:点击添加列→索引列,选择从0开始。
- 复制当前表并重命名为
上期表,在上期表中:- 添加自定义列,公式为
[索引] + 1,替换原索引列 - 仅保留
C.Code、索引、Amount列,将Amount重命名为上期Amount
- 添加自定义列,公式为
- 返回原表,点击合并查询→合并查询作为新查询,选择原表和
上期表,合并依据选C.Code和索引,合并类型为左外部。 - 展开合并后的
上期表列,仅保留上期Amount。 - 添加自定义列,公式:
if [上期Amount] = null then 0 - [Amount] else [Amount] - [上期Amount] - 删除索引列、
上期Amount列等冗余列,完成计算。
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

