求助:统计月度内跨天时段的消息发布实例数量
求助:统计月度内跨天时段的消息发布实例数量
我太懂这种跨天时段统计的糟心了!常规的区间公式一碰到零点就罢工,毕竟20:00到次日06:00根本不是一个连续的“正向”时间区间,普通的COUNTIFS肯定算不对。别发愁,给你两个实用的解法,不管你用Excel还是Google Sheets都能搞定:
方法一:一步到位的数组公式(无需辅助列)
假设你的消息时间戳(带日期+时间)存在A列,要统计2024年1月(可自行修改日期)内符合条件的数量,直接用这个公式:
=SUMPRODUCT(--((HOUR(A:A)>=20)+(HOUR(A:A)<6)>0)*(A:A>=DATE(2024,1,1))*(A:A<=DATE(2024,1,31)))
公式解释:
(HOUR(A:A)>=20)+(HOUR(A:A)<6)>0:判断时间是否在20点之后,或者6点之前,满足任一条件就返回有效计数(数值1)(A:A>=DATE(2024,1,1))*(A:A<=DATE(2024,1,31)):限定统计范围在目标月份内SUMPRODUCT会把所有同时符合两个条件的行累加起来,得到最终的有效消息数量
方法二:用辅助列简化逻辑(新手友好)
如果觉得数组公式看着头疼,可以加个辅助列(比如B列)来拆分逻辑:
- 在B1单元格输入:
=IF(OR(HOUR(A1)>=20,HOUR(A1)<6),1,0) - 下拉填充到所有行,这样符合条件的消息会标记为1,不符合的为0
- 最后用
SUMIFS统计当月的总数:
=SUMIFS(B:B,A:A,">="&DATE(2024,1,1),A:A,"<="&DATE(2024,1,31))
为啥你之前的公式没用?
因为常规的COUNTIFS(A:A,">=20:00",A:A,"<=06:00")逻辑上是矛盾的——20:00的时间数值比06:00大,这个区间在Excel里属于“空区间”,自然返回0。必须把跨天的时段拆成20:00到当天结束和当天开始到06:00两个独立区间,再把结果相加,上面的两种方法本质都是这么做的~
按照这个思路,你截图里的5个符合条件的消息就能准确统计出来啦!
备注:内容来源于stack exchange,提问作者PBA24
相关产品推荐
相关产品推荐

