Excel 2016统计整列周六日期数量结果错误如何解决?
问题原因
这并非WEEKDAY函数的Bug,属于Excel空白单元格的默认计算特性导致的问题:
- WEEKDAY函数省略第二参数(默认return_type=1)时,对输入值0会返回结果7(对应周六)
- Excel空白单元格参与数值计算时,会被默认识别为数值0
- 你引用整列A:A时,所有空白单元格都会被WEEKDAY判定为返回值7,因此会被计入周六的统计结果
- 周日、周五的统计不受影响,是因为WEEKDAY(0)的返回值7不会匹配1(周日)、6(周五)的判断条件
解决方案
- 方案1:在原公式基础上增加非空判断,适配所有Excel版本,修改后公式如下:
统计周六:=SUMPRODUCT(--(WEEKDAY(A:A)=7),--(A:A<>""))
统计周日:=SUMPRODUCT(--(WEEKDAY(A:A)=1),--(A:A<>""))
两个判断条件相乘,只有同时满足「对应星期数」和「单元格非空」才会被统计,结果准确。如果A列存在非日期的文本内容,可以把非空判断换成--ISNUMBER(A:A),额外排除非日期值。 - 方案2:使用动态引用限定计算范围,避免整列计算提升效率:
统计周六:=SUMPRODUCT(--(WEEKDAY(A1:INDEX(A:A,COUNTA(A:A)))=7))
公式会自动识别A列最后一个有内容的单元格,仅计算有数据的区域,不需要手动调整范围。 - 方案3:Excel 365/2021及以上版本可以用更简洁的写法:
统计周六:=COUNT(FILTER(A:A,(WEEKDAY(A:A)=7)*(A:A<>"")))
内容的提问来源于stack exchange,提问作者wia
相关产品推荐
相关产品推荐

