Removing Duplicate values from a string in VBA

前端 未结 5 2072
伪装坚强ぢ
伪装坚强ぢ 2020-12-18 17:05

In VBA if I have a string of numbers lets say ("1,2,3,4,5,2,2"), how can I remove the duplicate values and only leave the first instance so the string says ("

5条回答
  •  难免孤独
    2020-12-18 17:29

    Heres my crack at it:

    Function Dedupe(MyString As String, MyDelimiter As String)
        Dim MyArr As Variant, MyNewArr() As String, X As Long, Y As Long
        MyArr = Split(MyString, MyDelimiter)
        ReDim MyNewArr(0)
        MyNewArr(0) = MyArr(0)
        Y = 0
        For X = 1 To UBound(MyArr)
            If InStr(1, Join(MyNewArr, MyDelimiter), MyDelimiter & MyArr(X)) = 0 Then
                Y = Y + 1
                ReDim Preserve MyNewArr(Y)
                MyNewArr(Y) = MyArr(X)
            End If
        Next
        Dedupe = Join(MyNewArr, MyDelimiter)
    End Function
    

    Call it like this in code:

    Dedupe(Range("A1").Text,",")
    

    Or like this in the sheet:

    =Dedupe(A1,",")
    

    The first parameter is the cell to test and the second is the delimiter you want to use (in your example it is the comma)

提交回复
热议问题