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

如何在Power Query中拆分年度聚合的周销售历史数据?

用Power Query拆分年度聚合周销售报告为单周销售额

核心逻辑

Ventas YTD是年初至今累计销售额,单周销售额的计算规则:

  • 对应门店+SKU组合的第一周:单周销售额 = 该周的Ventas YTD
  • 后续周:单周销售额 = 当前周Ventas YTD - 上一周同门店同SKU的Ventas YTD

可视化操作步骤(Power Query界面)

  1. 导入并整理基础数据
    将所有周报告导入Power Query,确保表中包含Source.Name.1(周数)、SKU、Ventas YTD、No.Tienda.number.1(门店编码)列,且Ventas YTD为数值类型。

  2. 按维度排序
    选中No.Tienda.number.1、SKU、Source.Name.1三列,点击「转换」选项卡的升序排序,保证同门店同SKU的周数据严格按时间顺序排列。

    • 如果Source.Name.1是带文字的格式(比如"周3"),先转成数值:右键该列 → 「转换」→ 「提取」→ 「文本后的数字」,避免排序错误。
  3. 分组计算单周销售额

    • 点击「转换」→ 「分组依据」,设置分组字段为No.Tienda.number.1和SKU,新列名设为WeeklyData,操作选「所有行」,确定后生成包含分组表的列。
    • 展开WeeklyData列,仅勾选Source.Name.1和Ventas YTD(避免重复门店、SKU列)。
    • 点击「添加列」→ 「自定义列」,输入公式:
      [Ventas YTD] - List.Previous([Ventas YTD], 0)
      
      该公式自动取上一行同分组的Ventas YTD做减法,第一周因无上行数据,List.Previous返回0,结果即为当前周YTD值。
    • 将自定义列重命名为Ventas semana。
  4. 清理并加载
    删除不需要的辅助列(如WeeklyData),点击「关闭并上载」将结果导回Excel。


直接编辑M代码(高级编辑器)

若习惯写代码,替换现有查询内容为以下代码(注意替换Source部分为你的实际数据源):

let
    // 替换为你的实际数据源,比如Excel表或文件路径
    Source = Excel.CurrentWorkbook(){[Name="你的表名"]}[Content],
    // 转换周数为数值(针对带文字的周数字段)
    #"Converted Week Number" = Table.TransformColumns(Source, {{"Source.Name.1", each Number.From(Text.AfterDelimiter(_, "周")), Int64.Type}}),
    // 按门店、SKU、周数升序排序
    #"Sorted Rows" = Table.Sort(#"Converted Week Number",{{"No.Tienda.number.1", Order.Ascending}, {"SKU", Order.Ascending}, {"Source.Name.1", Order.Ascending}}),
    // 按门店和SKU分组,保留组内所有行数据
    #"Grouped Rows" = Table.Group(#"Sorted Rows", {"No.Tienda.number.1", "SKU"}, {{"WeeklyData", each _, type table}}),
    // 展开分组内的周数据和YTD销售额
    #"Expanded WeeklyData" = Table.ExpandTableColumn(#"Grouped Rows", "WeeklyData", {"Source.Name.1", "Ventas YTD"}, {"Source.Name.1", "Ventas YTD"}),
    // 计算单周销售额
    #"Added Weekly Sales" = Table.AddColumn(#"Expanded WeeklyData", "Ventas semana", each [Ventas YTD] - List.Previous([Ventas YTD], 0)),
    // 清理冗余列(按需调整)
    #"Removed Columns" = Table.RemoveColumns(#"Added Weekly Sales",{})
in
    #"Removed Columns"

关键注意点

  • 确保无重复的门店+SKU+周数组合,否则会导致计算错误
  • 若某周缺失某门店+SKU的数据,需填充0的话,可修改自定义列公式为:
    let
        prevYTD = try List.Previous([Ventas YTD]) otherwise 0
    in
        [Ventas YTD] - prevYTD
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:45:18