如何在Google Sheets中计算两类车库门的滚动每日平均开关次数
解决方案
前提假设
先明确数据结构(若你的列对应关系不同,可自行调整列号):
- A列:开关事件的日期(需设置为「日期」格式,避免文本格式导致逻辑错误)
- B列:门的类型(
Garage door/Third stall) - F列:每日对应门的总开关次数(若F列是单条开关记录,先看下方预处理步骤)
1. 基础滚动平均公式(最近N天)
若要计算**当前日期及之前6天(共7天)**对应门类型的滚动每日平均,在G2单元格输入公式后下拉填充:
=AVERAGEIFS($F$2:$F, $B$2:$B, B2, $A$2:$A, ">="&A2-6, $A$2:$A, "<="&A2)
- 调整滚动天数:将
A2-6改为A2-(N-1),比如计算最近30天的平均就用A2-29 - 公式逻辑:
$F$2:$F:指定要计算平均的每日次数范围$B$2:$B, B2:匹配当前行的门类型$A$2:$A, ">="&A2-6:筛选出滚动日期范围内的记录$A$2:$A, "<="&A2:限定日期不晚于当前行的日期
2. 若F列是单条开关记录(非每日汇总)
先在F列计算每日对应门的总开关次数,在F2输入公式后下拉:
=COUNTIFS($A$2:$A, A2, $B$2:$B, B2)
完成每日次数汇总后,再用上述AVERAGEIFS公式计算滚动平均。
3. 自动填充的动态数组公式(新版Google Sheets)
如果使用支持动态数组的Google Sheets版本,可一次性生成所有行的结果,无需手动下拉:
=BYROW(A2:B, LAMBDA(row, IF(INDEX(row, 1)="", "", AVERAGEIFS(F:F, B:B, INDEX(row, 2), A:A, ">="&INDEX(row,1)-6, A:A, "<="&INDEX(row,1)) ) ))
常见问题排查
- 日期格式校验:选中A列 → 点击「格式」→「数字」→「日期」,确保日期不是文本格式
- 引用范围修正:用绝对引用(带$)固定条件范围,避免下拉时范围偏移
- 空值/无记录处理:若结果显示
#DIV/0!,说明该门类型在滚动日期范围内无记录,可嵌套IFERROR返回0:=IFERROR(AVERAGEIFS($F$2:$F, $B$2:$B, B2, $A$2:$A, ">="&A2-6, $A$2:$A, "<="&A2), 0)
内容的提问来源于stack exchange,提问作者v15
相关产品推荐
相关产品推荐

