Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何防止COUNTIF函数将文本解释为日期_Excel_Excel Formula - Fatal编程技术网

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会首先解释为日期…似乎