如何统计指定时间段内的单元格数量?COUNTIFS/ARRAYFORMULA尝试未果
解决思路与公式示例
方法一:COUNTIFS 逐行/批量统计
G列的每个整点对应「前一小时到当前整点」的时段(比如G2是09:00:00,对应08:00-09:00),可以直接用COUNTIFS指定区间条件:
- 单格公式(H2单元格,对应08:00-09:00):
=COUNTIFS(A:A, ">="&G2-TIME(1,0,0), A:A, "<"&G2)
下拉公式到H列其他行,即可自动计算对应时段的数量。 - 数组批量公式(无需下拉,直接生成所有结果):
=ARRAYFORMULA(IF(G2:G="", "", COUNTIFS(A:A, ">="&G2:G-TIME(1,0,0), A:A, "<"&G2:G)))
之前用ARRAYFORMULA失败,大概率是没正确引用数组范围,或者未处理G列空白单元格(公式里的IF(G2:G="", "", ...)就是用来过滤空白的)。
方法二:FREQUENCY 高效批量统计
FREQUENCY函数专门用于按区间统计数值(时间在表格里本质是数值),操作更高效:
- 构造区间边界:在空白列(比如I列)输入时段边界值:
- I1:
TIME(8,0,0)(第一个时段左边界) - I2-I10:引用G2-G9的09:00到17:00整点
- I11:
TIME(18,0,0)(最后一个时段右边界)
- I1:
- 输入数组公式生成统计结果:
=ARRAYFORMULA(FREQUENCY(A:A, I1:I10))
公式输出的结果中,J1对应08:00-09:00,J2对应09:00-10:00,以此类推到J9对应17:00-18:00,自动忽略空白单元格,数据量大时比COUNTIFS更快。
关键注意点
- 确保A列和G列是时间格式,如果是文本格式,先用
TIMEVALUE函数转换(比如=TIMEVALUE(A1)),否则公式无法识别时间区间。 - 若A列时间带日期(时间戳包含日期),无需额外处理,公式会自动只比较时间部分,不影响区间判断。
内容的提问来源于stack exchange,提问作者Eric Morandeau
相关产品推荐
相关产品推荐

