使用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


提示:您可以在评论中使用HTML标签,且任何与HTML标签相同的符号都会被理解为HTML标签并以相应的格式显示.如果您的评论中有代码,可以使用相应的标签,例如,如果有VB或VBA代码,则可以使用[vb]标签,即[vb]放置的代码[/vb],这样会很清晰地显示代码.

2条评论

  1. homt398:

    可能使用rngCell.Value更好些
    另,下面代码就可以判断了,应该。
    Function bIfUnique(rng As Range) As Boolean
    Dim oDic As Object
    Dim rngCell As Range

    Set oDic = CreateObject(”Scripting.Dictionary”)
    For 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

  2. sngmd:

    这个不用VBA会更简单点,不过这个是事前阻止输入,你这个属于事后弥补,呵呵。
    在数据中选择数据有效性,选择自定义,如对A列实现唯一性检查,就用这个。。。。。
    =COUNTIF($A:$A,A1)=1

发表评论