使用VBA判断指定单元格区域中是否有重复值
写了一个VBA函数,用来判断指定单元格区域中是否有重复值。或许有用,因此辑录在此。
Function bIfUnique(rng As Range) As Boolean
Dim oDic As Object, rngCell As Range
Set oDic = CreateObject(”Scripting.Dictionary”)
For Each rngCell In rng
On Error Resume Next
oDic.Add rngCell.Text, rngCell.Text
Next rngCell
If oDic.Count <> rng.Cells.Count Then
bIfUnique = True
Else
bIfUnique = False
End If
End Function
该函数使用了Dictionary对象,其中参数rng代表要判断的单元格区域。可以使用下面的代码来测试该函数:
Sub test()
If bIfUnique(Range(”B2:C4″)) Then
MsgBox “有重复值”
Else
MsgBox “没有重复值”
End If
End Sub

homt398:
可能使用rngCell.Value更好些
另,下面代码就可以判断了,应该。
Function bIfUnique(rng As Range) As Boolean
Dim oDic As Object
Dim rngCell As Range
Set oDic = CreateObject(”Scripting.Dictionary”)
29 04月 2008, 11:41 amFor Each rngCell In rng
If Len(rngCell.Value) 0 Then
If oDic.exists(rngCell.Value) Then
bIfUnique = False
Exit Function
End If
oDic.Add rngCell.Value, rngCell.Value
End If
Next rngCell
bIfUnique = True
End Function
sngmd:
这个不用VBA会更简单点,不过这个是事前阻止输入,你这个属于事后弥补,呵呵。
6 05月 2008, 12:13 pm在数据中选择数据有效性,选择自定义,如对A列实现唯一性检查,就用这个。。。。。
=COUNTIF($A:$A,A1)=1