Excel工单追踪表统计近7天Open状态工单数量的COUNTIFS公式调试求助
你的公式逻辑方向是对的,但可能因为几个常见的Excel小细节问题导致无法正常运行,我来帮你排查并修正:
先分析你的原公式
=COUNTIFS(Main!G:G,"Open",Main!C:C,"<"&TODAY()+1,Main!C:C,">="&TODAY()-7)
这个公式的思路没问题——同时筛选G列=Open、C列日期≥7天前且C列日期<明天(等价于≤今天)。但可能卡壳在这几个地方:
常见问题排查&解决方案
C列日期不是Excel认可的日期格式
如果C列的日期是文本格式(比如手动输入的字符串),COUNTIFS没法正确比较日期大小。你可以先验证:选中C列的任意一个日期单元格,看Excel顶部的编辑栏,如果显示的是类似2024/05/10的日期格式而不是纯文本,那没问题;如果是文本,右键C列→「设置单元格格式」→选择「日期」,确认格式后重新输入或转换日期。日期范围的理解偏差
你的公式里>=TODAY()-7会包含今天往前数第7天到今天的所有日期,算下来是8天(比如今天10号,会包含3号到10号)。如果要严格统计过去7天(含今天的话是今天加前6天),可以把公式调整为:=COUNTIFS(Main!G:G,"Open",Main!C:C,">="&TODAY()-6,Main!C:C,"<="&TODAY())这样就是从今天往前推6天到今天,刚好7天的范围。
G列的"Open"存在格式问题
检查G列的状态值,有没有多余的空格(比如" Open"或者"open"小写),COUNTIFS是精确匹配的,大小写或空格都会导致筛选失败。可以用=COUNTIF(Main!G:G,"Open")先单独统计Open工单的总数,确认这个数字符合你的预期。处理文本格式的日期(如果上述方法无效)
如果C列确实是文本格式且无法转换,改用SUMPRODUCT函数来处理,它支持对文本日期进行转换:=SUMPRODUCT(--(Main!G:G="Open"),--(DATEVALUE(Main!C:C)>=TODAY()-6),--(DATEVALUE(Main!C:C)<=TODAY()))注意:如果C列有无法转换为日期的文本,这个公式会报错,需要先清理这些无效数据。
验证步骤
你可以分步验证来定位问题:
- 第一步:确认Open工单总数正确:输入
=COUNTIF(Main!G:G,"Open"),看结果是否和你手动统计的一致。 - 第二步:确认近7天提交的工单总数正确:输入
=COUNTIF(Main!C:C,">="&TODAY()-6),检查日期范围的统计是否符合预期。 - 第三步:再组合两个条件用COUNTIFS,这样就能快速定位是状态筛选还是日期筛选出了问题。
内容的提问来源于stack exchange,提问作者Jason Lucas

