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

如何在Power Query (M)中计算客户无销售的平均天数?

计算客户无销售的平均天数(Power Query实现)

测试数据准备

先模拟你提到的4行测试数据(2个客户各2条销售记录),方便验证逻辑:

NombreFecha
客户A2024-01-01 09:00:00
客户A2024-01-03 14:00:00
客户B2024-01-02 10:00:00
客户B2024-01-05 11:00:00

完整Power Query代码

基于你已经写的初始步骤,我把后续逻辑补全了,代码里加了详细注释,替换掉模拟的测试数据部分就能直接用:

// 先模拟测试数据(实际使用时替换成你的Tabla1)
let
    // 模拟4行测试数据:2个客户各2条销售记录
    测试数据 = Table.FromRecords({
        [Nombre = "客户A", Fecha = #datetime(2024,1,1,9,0,0)],
        [Nombre = "客户A", Fecha = #datetime(2024,1,3,14,0,0)],
        [Nombre = "客户B", Fecha = #datetime(2024,1,2,10,0,0)],
        [Nombre = "客户B", Fecha = #datetime(2024,1,5,11,0,0)]
    }),
    // 你的初始步骤:替换成实际的Excel表加载
    // Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content],
    Origen = 测试数据,
    #"Tipo cambiado" = Table.TransformColumnTypes(Origen,{{"Nombre", type text}, {"Fecha", type datetime}}),
    #"Fecha extraída" = Table.TransformColumns(#"Tipo cambiado",{{"Fecha", DateTime.Date, type date}}),
    // 步骤1:按客户分组,收集每个客户的所有销售日期
    #"按客户分组" = Table.Group(#"Fecha extraída", {"Nombre"}, {{"销售日期列表", each [Fecha], type list}}),
    // 步骤2:对每个客户的日期列表排序(确保时间顺序正确,避免原始数据乱序)
    #"日期排序" = Table.TransformColumns(#"按客户分组", {{"销售日期列表", List.Sort, type list}}),
    // 步骤3:计算相邻销售日期之间的无销售天数
    #"计算无销售天数" = Table.AddColumn(#"日期排序", "无销售天数列表", each 
        let
            日期列表 = [销售日期列表],
            // 生成相邻日期的配对(比如[1号,3号]会变成{(1号,3号)})
            相邻日期对 = List.Pairs(日期列表),
            // 计算每对日期的间隔天数,减1就是中间无销售的天数(比如1号到3号间隔2天,无销售天数是1天)
            无销售天数 = List.Transform(相邻日期对, each Duration.Days(_[2] - _[1]) - 1)
        in
            无销售天数
    ),
    // 步骤4:计算无销售天数的平均值(如果客户只有1条销售记录,返回0)
    #"计算平均无销售天数" = Table.AddColumn(#"计算无销售天数", "平均无销售天数", each 
        let
            天数列表 = [无销售天数列表],
            平均值 = if List.IsEmpty(天数列表) then 0 else List.Average(天数列表)
        in
            平均值
    ),
    // 整理最终结果,只保留需要的列
    #"整理最终列" = Table.SelectColumns(#"计算平均无销售天数", {"Nombre", "平均无销售天数"})
in
    #"整理最终列"

验证结果

运行上面的代码后,会得到以下结果:

Nombre平均无销售天数
客户A1
客户B2

完全符合预期:

  • 客户A的销售日期是1号和3号,中间无销售的是2号(1天),平均值就是1
  • 客户B的销售日期是2号和5号,中间无销售的是3号、4号(2天),平均值就是2

如果实际数据中客户有更多销售记录(比如3条及以上),代码会自动计算所有相邻间隔的无销售天数,再取平均值,完全适配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:29:04