VBA - Remover Duplicados do Array

Este tutorial ensinará como remover duplicatas de um Array no VBA.

Remover Duplicados

A maneira mais fácil de remover duplicatas de uma matriz VBA é atribuir os valores da matriz a uma coleção VBA e, em seguida, passar os valores de volta a uma matriz. Coleções não permitem valores duplicados e, portanto, usando uma coleção, podemos remover duplicatas de uma matriz. Criamos uma função para realizar esta tarefa:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Função ArrayRemoveDups (MyArray As Variant) As VariantDim nFirst As Long, nLast As Long, i As LongDim item como stringDim arrTemp () como stringDim Coll como nova coleção'Obtenha as posições da primeira e da última matriznFirst = LBound (MyArray)nLast = UBound (MyArray)ReDim arrTemp (nFirst to nLast)'Converter Array em StringPara i = nFirst to nLastarrTemp (i) = CStr (MyArray (i))Proximo eu'Preencher coleção temporáriaOn Error Resume NextPara i = nFirst to nLastColl.Add arrTemp (i), arrTemp (i)Proximo euErr.ClearNo erro GoTo 0'Resize ArraynÚltimo = Coll.Contagem + nPrimeiro - 1ReDim arrTemp (nFirst to nLast)'Populate ArrayPara i = nFirst to nLastarrTemp (i) = Coll (i - nPrimeiro + 1)Proximo eu'Output ArrayArrayRemoveDups = arrTempFunção FinalSub ArrTest ()Dim strNames (1 a 4) como stringDim outputArray () As StringDim i enquantoDim item como variante'Definir valores iniciais do arraystrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Steve"'Função Call DupoutputArray = ArrayRemoveDups (strNames)'Saída de valores para a janela imediata (CTRL + G)Para cada item em outputArrayDebug.Print itemPróximo itemEnd Sub

Nota: No exemplo, forçamos nosso Array a começar em 1 (não em 0). Se sua matriz começar em 0, você precisará modificar ligeiramente o código.

Observe que convertemos o conteúdo do array em uma string. Se necessário, você pode converter as strings de volta em inteiros após a conclusão do processo.

wave wave wave wave wave