我有一些产品代码,其中一些是带有前导零的数字,存储在电子表格中。
我正在执行一些依赖于 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
此外,如果您可以将整列引用限制为小于整列,则公式将更有效(快速)地工作。