如何在COUNTIF函数中使用CDate函数统计近两周的文本格式日期数据?
解决COUNTIF中无法直接使用CDate的问题
首先明确说:你没法直接在COUNTIF的区域参数里嵌套CDate函数,因为COUNTIF要求第一个参数必须是实际的单元格区域(比如Table1[Date Closed]),它不支持对区域做函数转换后再作为统计范围。不过不用急,不用VBA也能解决这个问题,用SUMPRODUCT函数就可以实现你的需求,而且不需要修改原表格的文本日期列。
推荐公式
直接用这个公式就能统计距今不超过两周的文本格式日期数量:
=SUMPRODUCT(--(CDATE(Table1[Date Closed])>=TODAY()-14))
或者用DATEVALUE函数(效果完全一致,适配更标准的文本日期格式):
=SUMPRODUCT(--(DATEVALUE(Table1[Date Closed])>=TODAY()-14))
公式解释
CDATE(Table1[Date Closed]):把文本格式的日期转换成真正的日期序列号,生成一个对应区域的数组>=TODAY()-14:判断每个转换后的日期是否在过去两周内,得到一组TRUE/FALSE的布尔值--:把布尔值转换成1(TRUE)和0(FALSE),这样SUMPRODUCT就能对这些数值求和,最终得到符合条件的日期数量- SUMPRODUCT本身支持数组运算,新版Excel直接回车即可生效,无需按Ctrl+Shift+Enter触发数组公式
为什么COUNTIF不行?
COUNTIF的设计逻辑是针对原生单元格区域的条件统计,它不会解析区域内的函数转换结果——你写COUNTIF(CDATE(Table1[Date Closed]),...)的时候,Excel会把CDATE(Table1[Date Closed])当成无效的区域引用,所以会返回错误或者不正确的统计结果。
如果是Excel 365/2021版本,也可以用更简洁的COUNTX函数:
=COUNTX(Table1,--(CDATE([Date Closed])>=TODAY()-14))
不过SUMPRODUCT的兼容性更好,能适配所有Excel版本。
内容的提问来源于stack exchange,提问作者Sammii
相关产品推荐
相关产品推荐

