VBA实用小程序68:判断指定单元格区域中是否存在重复值

2021-03-12 16:49:36 浏览数 (1)

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漏掉了,这两天陆续补上。谢谢有心人“深海”朋友的提醒!

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

0 人点赞