如何在同一行孤立单元格中计算时序累积平均值?
解决Google Sheets中「Monthly Total」累积移动平均值计算问题
问题根源
你之前的公式(包括QUERY方案)都是对整行的「Monthly Total」做全局平均,没有限制范围为当前单元格左侧的历史数据,导致所有平均值结果一致;同时QUERY会输出多个匹配结果,无法直接生成单一累积值。
解决方案
1. 单个「Monthly Average」单元格公式
假设你要在第32行的某个Average单元格(比如AF32)计算左侧所有「Monthly Total」的平均值,使用以下公式:
=AVERAGE(FILTER($32:$32, COLUMN($32:$32) < COLUMN(AF32), $31:$31 = "Monthly Total"))
$32:$32:目标数值所在行(可根据实际行号修改)COLUMN($32:$32) < COLUMN(AF32):仅筛选当前单元格左侧的列$31:$31 = "Monthly Total":匹配标识行中「Monthly Total」对应的数值(标识行号根据实际修改)
如果标识文本有大小写或格式差异,改用正则匹配:
=AVERAGE(FILTER($32:$32, COLUMN($32:$32) < COLUMN(AF32), REGEXMATCH($31:$31, "Monthly Total")))
2. 批量自动填充所有Average单元格
用ARRAYFORMULA结合BYCOL实现整行自动计算,无需逐个单元格粘贴:
=ARRAYFORMULA(IF(REGEXMATCH($31:$31, "Monthly Average"), BYCOL(SEQUENCE(1, COLUMNS($32:$32)), LAMBDA(col, AVERAGE(FILTER(INDEX($32:$32,1,1):INDEX($32:$32,1,col), INDEX($31:$31,1,1):INDEX($31:$31,1,col) = "Monthly Total")))), ""))
REGEXMATCH($31:$31, "Monthly Average"):仅在标记为「Monthly Average」的单元格填充结果BYCOL(...):逐列遍历,对每一列计算从行首到当前列的累积平均INDEX($32:$32,1,1):INDEX($32:$32,1,col):限定计算范围为当前列左侧的所有单元格
注意事项
- 确保标识行(如示例第31行)与数值行(第32行)的列完全对应
- 空的「Monthly Total」单元格会被
FILTER自动排除,不影响平均值计算 - 若行号或标识文本不同,直接替换公式中的行号和匹配文本即可
内容的提问来源于stack exchange,提问作者Brandon Heath
相关产品推荐
相关产品推荐

