在Excel CountIF函数中BUG

时间:2014-11-12 08:26:56

标签: excel formula countif

我在使用Excel中的CountIf函数时遇到问题。

=COUNTIF(A:A,A2)

A列包含以下项目:

0107791489614255200011140926107503100513

0107791489614255200011140926107503100457

0107791489614255200011140926107503100518

0107791489614255200011140926107503100503

0107791489614255200011140926107503100519

0107791489614255200011140926107503100444

0107791489614255200011140926107503100521

0107791489614255200011140926107503100438

0107791489614255200011140926107503100449

0107791489614255200011140926107503100443

0107791489614255200011140926107503100501

0107791489614255200011140926107503100455

公式结果为12,即使这些字符串组完全不相同。它将这些字符串计为类似字符串,我认为这与字符串长度有关?

你们觉得怎么样?我感谢您的帮助。

2 个答案:

答案 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.

此致