excelperfect
有时候,我们可能想要知道某一区域中是否输入了重复值,这样好做进一步的处理。下面的VBA自定义函数可以帮助我们作出这样的判断:
代码语言:javascript复制Function bIfUnique(rng As Range) As Boolean
Dim oDic As Object
Dim rngCell As Range
‘绑定Dictionary对象
Set oDic =CreateObject("Scripting.Dictionary")
‘遍历指定单元格区域中的单元格
For EachrngCell In rng
On Error Resume Next
oDic.AddrngCell.Text, rngCell.Text
Next rngCell
'如果字典元素的数量不等于
'单元格区域中单元格的数量
'表明存在重复值,返回True
'否则不存在重复值,返回False
If oDic.Count <>rng.Cells.Count Then
bIfUnique = True
Else
bIfUnique = False
End If
End Function
该函数使用了Dictionary对象,利用了字典对象键值唯一的特性。代码中,参数rng代表要判断的单元格区域。
使用下面的代码来测试该函数:
代码语言:javascript复制Sub test()
If bIfUnique(Range("B2:C4")) Then
MsgBox "有重复值"
Else
MsgBox "没有重复值"
End If
End Sub
也可以在工作表中像内置的Excel函数那样使用bIfUnique函数,如下图1所示。
图1
注:由于疏忽,先推送了VBA实用小程序69,将VBA实用小程序67和68漏掉了,这两天陆续补上。谢谢有心人“深海”朋友的提醒!
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。