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"。求各位大仙指点
例: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"。求各位大仙指点
解决方案 »
- 急,求助,求助!!!!关于recordset的问题
- 系统不支持所选择的排序???
- 大伙们帮我看看,这个vc做的api怎么转化为 vb的声明阿!
- 谁有水晶报表各种对象的属性、方法、事件的中文帮助?急急急急急急急急急急急急急急急急急
- 请高手指点怎样学好 windows API 函数
- 用VB如何实现?将Oracle里的表导入Access本地表中
- 用VB如何实现在内存中开辟一个存储大量数据的空间?
- 急!!请求帮助!!
- !!
- 请问在csdn论坛中的人一般的可用分是多少的?能说说你们的分数吗?我想知道一下。另外专家分能转换成可用分?如果不能有什么用?
- 谁知道鲁大师(一款软件)的任务栏标尺是什么原理
- 数据库链接里,字段是变量该如何表示
For Each c In Range("a1:a3")
If VBA.Left(c, 1) <> 0 Then m = m + 1
Next c
If m > 1 Then
MsgBox "NG"
Else: MsgBox "ok"
End If
End Sub
当然如果简单的countif解决不了的话,也就只能是自己另写函数想办法了
1.文本型的数值和数字混用的时候,用Conutif来计算的话,它不会将两者进行区分,即0012和12它认为是一样的;
2.对于长度超过15位的文本型的数值,只要前15位是相同的,Countif就认为它们是相同的。原因还是因为它先将文本型的数值转化为数字后再进行比较,转化为数字后因为excel的精度为15位,超过的位数将视作为0,所以下面两个数字:1234567890123451和1234567890123452对excel来讲都是一样的。
解决的办法就是用Sumproduct。