Excel的countif函数不区分以零开头的数字
excel中需要做重复check,运用WorksheetFunction.CountIf不能很好的返回结果
例:excel数据
A
1 001
2 002
3 1
代码:
If (WorksheetFunction.CountIf(Range("A1:A3"), "001") > 1) Then
MsgBox ("NG")
Else
MsgBox ("OK")
End If
想要的结果是"OK",但因为不区分"001"和"1"所以得到的结果是"NG"。
求各位大仙指点。。。
[解决办法]
既然现成的函数不会以你的逻辑来做,只有自己写函数了。
[解决办法]
Counif会先将文本型的数值转化为数字后再进行比较,这带来了两个风险:
1.文本型的数值和数字混用的时候,用Conutif来计算的话,它不会将两者进行区分,即0012和12它认为是一样的;
2.对于长度超过15位的文本型的数值,只要前15位是相同的,Countif就认为它们是相同的。原因还是因为它先将文本型的数值转化为数字后再进行比较,转化为数字后因为excel的精度为15位,超过的位数将视作为0,所以下面两个数字:1234567890123451和1234567890123452对excel来讲都是一样的。
解决的办法就是用Sumproduct。