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

Power Query中实现上期值相减及合并前预处理方法咨询

Power Query 实现上期值相减计算

核心逻辑

按C.Code分组,组内按FiscalYearPeriod(或日期)升序排序后:

  • 组内第一行:计算 0 - Amount
  • 后续行:计算 当前Amount - 上一行Amount

方法一:分组+自定义列(简洁高效)

  1. 把数据导入Power Query编辑器,选中C.Code列,点击开始→分组依据,按以下设置配置:
    • 分组依据:C.Code
    • 新列名:分组数据
    • 操作:所有行
  2. 点击分组数据列右侧的展开箭头,选择添加自定义列,粘贴以下公式:
    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(排序后数据) & {"计算列"})
    
  3. 点击自定义列的展开箭头,选择展开到新行(或直接展开所有列),替换原表结构。
  4. 删除冗余的分组数据列,调整列顺序即可。

方法二:索引列+自合并(直观易理解)

  1. 导入数据后,按C.Code和FiscalYearPeriod升序排序。
  2. 添加索引列:点击添加列→索引列,选择从0开始。
  3. 复制当前表并重命名为上期表,在上期表中:
    • 添加自定义列,公式为[索引] + 1,替换原索引列
    • 仅保留C.Code、索引、Amount列,将Amount重命名为上期Amount
  4. 返回原表,点击合并查询→合并查询作为新查询,选择原表和上期表,合并依据选C.Code和索引,合并类型为左外部。
  5. 展开合并后的上期表列,仅保留上期Amount。
  6. 添加自定义列,公式:
    if [上期Amount] = null then 0 - [Amount] else [Amount] - [上期Amount]
    
  7. 删除索引列、上期Amount列等冗余列,完成计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:04:51