我在使用Excel中的CountIf函数时遇到问题。
=COUNTIF(A:A,A2)
A列包含以下项目:
0107791489614255200011140926107503100513
0107791489614255200011140926107503100457
0107791489614255200011140926107503100518
0107791489614255200011140926107503100503
0107791489614255200011140926107503100519
0107791489614255200011140926107503100444
0107791489614255200011140926107503100521
0107791489614255200011140926107503100438
0107791489614255200011140926107503100449
0107791489614255200011140926107503100443
0107791489614255200011140926107503100501
0107791489614255200011140926107503100455
公式结果为12,即使这些字符串组完全不相同。它将这些字符串计为类似字符串,我认为这与字符串长度有关?
你们觉得怎么样?我感谢您的帮助。
答案 0 :(得分:5)
+1,一个好问题。不是一个错误,而是一个功能!
这是由于Excel在执行此操作时隐式将输入转换为其内部数字类型并失去精度。 Excel的内部数字类型是IEEE浮点双精度数。 (虽然它在格式化和错误传播方面做得很聪明,所以它看起来像1/3 + 1/3 + 1/3正确的总和)。
由于它们如此相似,所以它们都相互比较。
一种补救措施是为每个字符串添加'
(单引号)前缀,这将阻止转换为数字类型。然后COUNTIF
值返回1.(至少在我的Excel版本中; 2013年)。
答案 1 :(得分:3)
单个撇号前面的字符串不能解决问题。 COUNTIF旨在尽可能将数据解释为数字,而不管所讨论的值的数据类型。这有时是有帮助的,有时(如此处)不是。
SUMPRODUCT没有展示这个属性:
=SUMPRODUCT(0+($A$1:$A$12=A2))
将根据需要返回1.
此致