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

Power BI中按日求和后计算近30天均值的问题求助

解决方案:按日期汇总后计算滚动N天平均值

第一步:计算每日总和

先把原始数据(日期、账户、数值)按日期汇总,得到每日的数值总和,有两种常用方法:

方法1:数据透视表(Pivot Table)

  1. 选中原始数据区域(A:C列)
  2. 插入数据透视表,将「日期」拖到行区域,「数值」拖到值区域并设置为「求和」
  3. 得到的结果就是每日唯一的总和(比如12/26/2023的总和为497+328+398=1223)

方法2:公式计算(无需透视表)

假设原始数据日期在A列,数值在C列,在空白列(比如E列)输入不重复的日期,在F列输入公式计算对应日期的总和:

=SUMIFS($C:$C,$A:$A,E2)

下拉填充即可得到所有日期的每日总和。


第二步:计算滚动N天平均值(以30天为例,示例用3天)

假设汇总后的日期在E列,每日总和在F列,在G列计算包含当日在内的最近30天的平均值:

通用公式(适配非连续日期)

因为你的日期可能不是连续的(比如示例中跳过了部分日期),必须用日期范围筛选计算,不能用固定偏移:

=IF(COUNTIFS($E:$E,">="&E2-29,$E:$E,"<="&E2)<30,"",AVERAGEIFS($F:$F,$E:$E,">="&E2-29,$E:$E,"<="&E2))

参数说明:

  • E2-29:代表当日往前推29天(加上当日共30天),如果是示例中的3天需求,改成E2-2即可
  • COUNTIFS:判断该日期范围内是否有至少30条(或3条)有效数据,不足则留空(和你的示例格式一致)
  • AVERAGEIFS:筛选出符合日期范围的每日总和,计算平均值

Excel 365/Google Sheets 简化公式(动态数组)

如果使用支持动态数组的版本,可用FILTER更直观实现:

=IFERROR(IF(ROWS(FILTER($F:$F,$E:$E>=E2-29,$E:$E<=E2))<30,"",AVERAGE(FILTER($F:$F,$E:$E>=E2-29,$E:$E<=E2))),"")

关键注意事项

  1. 日期格式验证:确保E列的日期是真正的日期格式(不是文本),可通过右键设置单元格格式为「日期」,或用ISDATE(E2)验证,否则日期加减运算会失效
  2. 避免重复数据:必须先将同一日期的多账户数值汇总为单条每日总和,否则公式会把每个账户的数值单独计入平均,导致结果错误
  3. 滚动天数调整:如果需要其他天数(比如7天),只需把公式中的29改成对应数值(7天则改6)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:05:59