VBA Removing duplicates values in an array including the same value
excel, vba
Solution
Try this code:
Sub Remove_All_Duplicated()
Dim Array_1
Array_1 = Array("pedro", "maria", "jose", "jesus", "pepe", "pepe", "jose")
Dim Array_2()
Dim eleArr_1, x
x = 0
For Each eleArr_1 In Array_1
If UBound(Filter(Array_1, eleArr_1)) = 0 Then
ReDim Preserve Array_2(x)
Array_2(x) = eleArr_1
x = x + 1
End If
Next
End Sub
Additional solution as `Filter` function doesn't care about 'exact match'. This new one requires reference to Microsoft Scripting Runtime in VBA project.
Sub alternative()
Dim Array_1
Array_1 = Array("pedro", "pedro maria", "maria", "jose", "jesus", "pepe", "pepe", "jose")
Dim Array_2()
Dim Array_toRemove()
Dim dic As New Scripting.Dictionary
Dim arrItem, x As Long
For Each arrItem In Array_1
If Not dic.Exists(arrItem) Then
dic.Add arrItem, arrItem
Else
ReDim Preserve Array_toRemove(x)
Array_toRemove(x) = dic.Item(arrItem)
x = x + 1
End If
Next
For Each arrItem In Array_toRemove
dic.Remove (arrItem)
Next arrItem
Array_2 = dic.Keys
'quic tests to remove when unnecessary
Debug.Print UBound(Array_2), UBound(Array_toRemove)
Debug.Print Join(Array_2, "/")
End Sub
Problem
There is a way to remove all duplicates in array with VBA, also the first value. Just keeping the not Duplicated values Example: ``` Array_1 ['pedro','maria','jose','jesus','pepe','pepe','jose'] ``` Result: ``` Array_1 ['pedro','maria','jesus'] ```