如何从文本提取日期后用COUNTIF统计14天内指定类别的待办任务数量
问题1:公式溢出、筛选条件全部为真、无法统计总数的修复
你当前使用的公式存在三个核心错误:
- OR函数对A5:A22整段范围判断时,只要范围内存在任意一个符合项就会返回全局TRUE,这是你添加项目筛选后所有结果都为真的原因
- COUNTIF的第二个参数不支持直接写多单元格运算逻辑,日期提取、日期比较的逻辑写在COUNTIF参数中无法逐行生效
- 整列范围的数组运算在没有包裹汇总函数时,Excel会自动返回数组结果触发溢出报错,无法直接得到总计数
可用的正确公式:
=SUMPRODUCT( --(ISNUMBER(MATCH(A5:A22,{"Bananas","Oranges","Apples"},0))), --(DATEVALUE(RIGHT(B5:B22,LEN(B5:B22)-FIND(" ",B5:B22)))-TODAY()<=14), --(DATEVALUE(RIGHT(B5:B22,LEN(B5:B22)-FIND(" ",B5:B22)))-TODAY()>=0) )
注:如果B列提取的内容已经是日期格式,可以去掉DATEVALUE包裹。公式中--的作用是把布尔值TRUE/FALSE转为1/0参与求和,SUMPRODUCT会自动逐行计算符合所有条件的行数,不会触发溢出。
问题2:无法通过条件格式计数的解决方案
不建议依赖条件格式的显示结果做统计,直接把条件格式对应的判断规则写到上述SUMPRODUCT的条件参数中即可实现同样的统计逻辑,效率更高也不会出错。
如果确实需要通过VBA读取条件格式的颜色结果,需要使用DisplayFormat属性读取,示例代码片段:
Function CountRedFont(rng As Range) As Long Dim cell As Range For Each cell In rng If cell.DisplayFormat.Font.Color = vbRed Then CountRedFont = CountRedFont + 1 End If Next cell End Function
你之前VBA调用失败,大概率是没有使用DisplayFormat属性,直接读取Font.Color无法获取条件格式生效后的字体颜色。
内容的提问来源于stack exchange,提问作者esrever
相关产品推荐
相关产品推荐

