VBA Excel Single out Duplicates在多行的单行中

时间:2016-10-15 18:16:58

标签: vba excel-vba excel

我有一张数据表

A - B - A - A - B - C - B
E - E - E - D - D - E - F
G - G - H - H - H - I - H
J - K - K - K - K - L - L

有没有办法让我挑出第一排的A和B,E&第二行的D,基本上是每行的重复,它在同一行中有2个差异重复。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用词典来实现这一目标。转到VB编辑器,然后选择Tools,References并勾选" Microsoft Scripting Runtime"导入词典功能(这种方法有助于Intellisense)。

编写此代码是为了以工作表函数的形式提供该功能。

您可以根据需要进行修改 - 如果您需要帮助,请回复。我不确定您的数据是如何格式化的,因此删除连字符和空格的行。

    Public Function ShowDuplicates(rngSource As Range) As String
    Dim dctUnique   As Dictionary
    Dim dctDups     Dictionary
    Dim intCounter  As Integer
    Dim strSource   As String
    Dim strCurrent  As String

    Set dctUnique = New Dictionary
    Set dctDups = New Dictionary

    ' Remove hyphen and space
    strSource = Replace(Replace(rngSource.Value, "-", ""), " ", "")

    For intCounter = 1 To Len(strSource)
        strCurrent = Mid$(strSource, intCounter, 1)
        If dctUnique.Exists(strCurrent) Then
            If Not dctDups.Exists(strCurrent) Then
                ' Only add it to the dups dict if required
                dctDups.Add strCurrent, strCurrent
            End If
        Else
            dctUnique.Add strCurrent, strCurrent
        End If
    Next

    If dctDups.Count > 0 Then
        ShowDuplicates = Join(dctDups.Keys(), ",")
    Else
        ShowDuplicates = ""
    End If

    End Function