如何防止COUNTIF函数将文本解释为日期

时间:2019-06-14 00:29:04

标签: excel excel-formula

如果目标数组包含无意间看起来像日期的文本,则CountIF似乎将返回错误的结果。我一直在寻找解决方案,但还没有找到遇到相同问题的人。

要复制该问题:

单元格A1:10-1968(作为文本,可以加撇号开头)

单元格A2:= COUNTIF(A1,"=10-68")

单元格A2将返回1,因为它将A1解释为包含日期(1968年10月1日),即使其格式设置为文本。在我的情况下,值10-1968是Office#10,项目#1968(与日期完全无关)。

我尝试了TEXT函数和LEFT函数的各种组合,但没有改善。我认为,如果看起来像日期,CountIF将会以这种方式看到它。如何防止这种行为?

注意:我不想使用SumProduct或编写UDF。而且,我用MATCH解决了返回NA的问题,因此需要将其包装在ISNA中。但这使公式变得更加复杂,我想知道如何通过普通使用CountIF来解决这个问题。

谁知道什么时候字符串看起来像日期?除非有办法仅在完全匹配的文字上进行匹配,否则这似乎会使CountIf的使用不可靠。

2 个答案:

答案 0 :(得分:2)

尝试:

=COUNTIF(A1:A5,"*10-68")

使用星号通配符*将使您的COUNTIF()工作。神奇地它将得到正确的结果。在您的情况下,这似乎是一个有效的选择,因为您的第一个-前只有两个数字。前面的星号不会造成伤害。在COUNTIF()中使用通配符的情况下,似乎Excel仅开始使用真实的文本字符串。我本人对此没有任何解释。

另一个选择,如前所述,是将COUNTIFS()?通配符组合一起使用,如下所示:

=COUNTIFS(A1,"10-68",A1,"??-??")

示例:

enter image description here

B1中的公式是:

=COUNTIF(A1:A5,"*10-68")

=COUNTIFS(A1:A5,"10-68",A1:A5,"??-??")

答案 1 :(得分:0)

使用输入的=SUM(IF(A1="10-68",1,0))作为数组公式(通过按 Ctrl + Shift + Enter )可以为您提供结果正在寻找。