Excel 如何防止COUNTIF函数将文本解释为日期
如果目标数组包含无意中看起来像日期的文本,Excel 如何防止COUNTIF函数将文本解释为日期,excel,excel-formula,Excel,Excel Formula,如果目标数组包含无意中看起来像日期的文本,CountIF似乎会返回不正确的结果。我已经广泛地寻找解决方案,但还没有发现任何人有同样的问题 要复制此问题,请执行以下操作: 单元格A1:10-1968(作为文本,可在前面加撇号) 单元格A2:=COUNTIF(A1,“=10-68”) 单元格A2将返回1,因为它将A1解释为包含日期(1968年10月1日),即使其格式为文本。在我的例子中,10-1968的值是Office#10,Project#1968(与日期无关) 我尝试了TEXT函数和LEFT函数
CountIF
似乎会返回不正确的结果。我已经广泛地寻找解决方案,但还没有发现任何人有同样的问题
要复制此问题,请执行以下操作:
单元格A1
:10-1968(作为文本,可在前面加撇号)
单元格A2
:=COUNTIF(A1,“=10-68”)
单元格A2
将返回1,因为它将A1解释为包含日期(1968年10月1日),即使其格式为文本。在我的例子中,10-1968的值是Office#10,Project#1968(与日期无关)
我尝试了TEXT
函数和LEFT
函数的各种组合,但没有任何改进。我想如果它看起来像一个日期,CountIF
会这么看。如何防止这种行为
注意:我不想使用SumProduct
或编写自定义项。而且,我解决了MATCH
的问题,它返回NA
,因此需要将其包装在ISNA
中。但这就产生了一个更复杂的公式,我想知道如何用CountIF
的普通用法来解决这个问题
谁知道字符串什么时候看起来像约会?这似乎使得使用CountIf
不可靠,除非有一种方法可以让它仅在精确的文本匹配上匹配。使用=SUM(IF(A1=“10-68”,1,0))
作为数组公式输入(按Ctrl+Shift+Enter)将给出您要查找的结果。使用=SUM(IF(A1=“10-68”,1,0))
作为数组公式输入(按Ctrl+Shift+Enter)将显示您要查找的结果。尝试:
=COUNTIF(A1:A5,"*10-68")
使用星号通配符*
将使您的COUNTIF()
正常工作。神奇的是,它会得到正确的结果。在您的情况下,这似乎是一个有效的选项,因为您的第一个-
前面只有两个数字。前面的星号不会有什么坏处。在COUNTIF()
中使用通配符时,Excel似乎只开始处理真文本字符串。我自己对此没有解释
前面提到的另一个选项是将COUNTIFS()
与?
通配符组合使用,如下所示:
=COUNTIFS(A1,"10-68",A1,"??-??")
例如:
B1
中的公式为:
=COUNTIF(A1:A5,"*10-68")
或
尝试:
使用星号通配符*
将使您的COUNTIF()
正常工作。神奇的是,它会得到正确的结果。在您的情况下,这似乎是一个有效的选项,因为您的第一个-
前面只有两个数字。前面的星号不会有什么坏处。在COUNTIF()
中使用通配符时,Excel似乎只开始处理真文本字符串。我自己对此没有解释
前面提到的另一个选项是将COUNTIFS()
与?
通配符组合使用,如下所示:
=COUNTIFS(A1,"10-68",A1,"??-??")
例如:
B1
中的公式为:
=COUNTIF(A1:A5,"*10-68")
或
我不认为在没有SUMPRODUCT和/或helper列的情况下有办法做到这一点,将单元格格式化为纯文本而不是自动解决此问题将A1单元格的格式更改为10+68以避免与日期混淆我认为在没有SUMPRODUCT和/或helper列的情况下,没有办法做到这一点。至少在google sheets中,将单元格格式化为纯文本而不是自动解决问题将A1单元格的格式更改为10+68以避免与日期混淆这与数组类型公式SUMPRODUCT的思路相同。它与
=SUMPRODUCT(--(A1=“10-68”)
相同,它进行迭代,而不是OP想要的。OP没有提到任何关于数组公式的内容SUMPRODUCT
不一定意味着数组公式。您是对的,这是我对问题的解释。顺便说一句,你的求和可以简化:=sum(--(A1=“10-68”)
不需要IF。谢谢,但作为OP,我写道:“我想知道如何使用CountIF来解决这个问题。”我的意思是没有其他公式、UDF或数组。JvdV无需阵列即可解决问题。我继续学习如何发布带有特定参数的问题,但很难列出所有需要排除的问题。尽管如此,还是要感谢您的尝试。这与数组类型公式SUMPRODUCT的思路相同。它与=SUMPRODUCT(--(A1=“10-68”)
相同,它进行迭代,而不是OP想要的。OP没有提到任何关于数组公式的内容SUMPRODUCT
不一定意味着数组公式。您是对的,这是我对问题的解释。顺便说一句,你的求和可以简化:=sum(--(A1=“10-68”)
不需要IF。谢谢,但作为OP,我写道:“我想知道如何使用CountIF来解决这个问题。”我的意思是没有其他公式、UDF或数组。JvdV无需阵列即可解决问题。我继续学习如何发布带有特定参数的问题,但很难列出所有需要排除的问题。不过,还是要感谢您的尝试。在此基础上,如果您将查找值放在一个单元格中,比如C1,那么这个数组公式将根据输入创建??-
:=COUNTIFS(a:a,C1,a:a,CONCAT(if(MID(C1,ROW($XFD$1:INDEX($XFD:$XFD,LEN(C1)),1)=“-”,“-”,“-”,“?”)
由于它只是迭代字符串的长度,因此计算起来不会太费力。但它确实需要CONCAT公式。聪明!但是搜索字符串的格式不限于格式??-??。第二段可以是1到4个字符。上面的Scott也很聪明,但这个公式比我找到的IF(ISNA(match…)解决方案复杂得多。这篇文章的目的是找到一个使用CountIF的“普通”用法的解决方案,如果这比使用Match更简单或等效的话。但似乎Excel会首先解释为日期…似乎