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

如何用单个公式在Google Sheets中计算移动平均值?

在Google Sheets中用单个公式计算累积移动平均值

针对动态生成/追加数据的A列(Data列),要生成B列(Average_so_far)的累积移动平均值(即每一行的值是从第一行到当前行所有数据的平均值),可以用以下两种单个公式实现:

方案1:用SCAN函数(简洁高效,推荐)

SCAN函数支持累积计算,是处理这类需求的最优解。在B1单元格输入公式:

=ARRAYFORMULA(IF(A:A="", "", SCAN(0, A:A, LAMBDA(acc, val, acc+val))/SCAN(0, A:A, LAMBDA(acc, val, IF(val="", acc, acc+1)))))

原理说明:

  • 第一个SCAN函数计算从第一行到当前行的累积求和
  • 第二个SCAN函数统计从第一行到当前行的非空数据累积数量
  • 两者相除得到对应行的累积平均值,IF(A:A="", "", ...)用于跳过A列的空行,避免显示错误值

方案2:用SUMIF+COUNTIF(兼容旧版)

如果你的Google Sheets版本不支持SCAN函数,可使用SUMIF和COUNTIF的组合:

=ARRAYFORMULA(IF(A:A="", "", SUMIF(ROW(A:A), "<="&ROW(A:A), A:A)/COUNTIF(ROW(A:A), "<="&ROW(A:A), A:A)))

原理说明:

  • SUMIF(ROW(A:A), "<="&ROW(A:A), A:A)计算当前行及以上所有A列数据的总和
  • COUNTIF(ROW(A:A), "<="&ROW(A:A), A:A)统计当前行及以上的非空数据个数
  • 除法得到累积平均值,同样通过IF语句过滤空行

两种公式都只需在B1单元格输入一次,就能自动填充整列;当A列追加新数据时,B列会自动更新对应的平均值,完全适配动态数据场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:42:57