=countif 表示“0001234”不等于“0001234”如何强制 countif 将字符串视为文本而不是数字?

=countif 表示“0001234”不等于“0001234”如何强制 countif 将字符串视为文本而不是数字?

我有一些产品代码,其中一些是带有前导零的数字,存储在电子表格中。

我正在执行一些依赖于 COUNTIF 不等于函数的操作(详细信息在评论中,但与问题无关)。处理包含带前导零的数字的字符串时,Countif 似乎会中断。

简单演示

例如,如果 A1 包含“foo”,则:

=COUNTIF(A1,"<>"&A1)

返回 0。也就是说,A1 中没有不等于 A1 的单元格(当然)。

但如果 A1 包含“0001234”作为文本,则返回 1,即A1 不等于 A1

更多信息:=countif(A1:"<>"&"1234")返回 0,因此问题似乎是 excel 自动将字符串“0001234”转换为数字 1234,但仅限于标准而不是在范围然后找到“0001234”=/=1234。

解决方法:创建一个辅助列,并在所有代码后附加一个垃圾文本字符。我目前已将包含 ="@"&X1 的辅助列添加到我的所有列表中,但这不是一个完美的解决方案。

答案1

编辑:从添加更改NUL为添加*符合标准。

您将看到布尔值有类似的行为。我发现“强制”不进行转换的一种方法是将 a 添加到条件参数中COUNTIF(或将其前置) 。例如:*

=COUNTIF(A1,"<>" & A1 & "*" )

即使是A1 中的0字符串也会返回0001234

“*” 强制 COUNTIF 将 A1 视为条件参数中的文本。当然,如果 A1 包含数字,这将失败。因此您可能需要对此进行测试

=COUNTIF(A1,"<>" &  A1 & IF(ISNUMBER(A1),"","*"))

这是使用您在评论中发布的数据的屏幕截图:

在此处输入图片描述

由于COUNTIF这种方式使用并不完全可靠,因此您还可以考虑其EXACT功能。

=N(NOT(EXACT(A2,B2)))

或者更简单地说,如果不区分大小写的话:

=A2<>B2

将返回与条件中使用通配符相同的结果COUNTIF,并且还能够排除测试范围出现在条件内的可能性。

在此处输入图片描述

如果我理解COUNTIFS您在上面的评论中发布的公式,以下内容可能会提供等效的公式,但我希望看到具有您预期结果的数据。

=SUMPRODUCT((A:A=A2)*(B:B<>B2))<1

此外,如果您可以将整列引用限制为小于整列,则公式将更有效(快速)地工作。

相关内容