VBA – Remover Duplicatas de uma Matriz

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 10, 2023

Este tutorial ensinará a você como remover duplicatas de uma matriz no VBA.

Remover Duplicatas

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

Function RemoverDuplicatasMatriz(MinhaMatriz As Variant) As Variant
 Dim nPrimeira As Long, nUltima As Long, i As Long
 Dim item As String
    
 Dim arrTemp() As String
 Dim Coll As New Collection

 'Obter a primeira e a última posição da matriz
 nPrimeira = LBound(MinhaMatriz)
   nUltima = UBound(MinhaMatriz)
 ReDim arrTemp(nPrimeira To nUltima)

 'Converter matriz em string
 For i = nPrimeira To nUltima
    arrTemp(i) = CStr(MinhaMatriz(i))
 Next i
    
 'Preencher a coleção temporária
 On Error Resume Next
 For i = nPrimeira To nUltima
    Coll.Add arrTemp(i), arrTemp(i)
 Next i
 Err.Clear
 On Error GoTo 0

 'Redimensionar a matriz
 nUltima = Coll.Count + nPrimeira - 1
 ReDim arrTemp(nPrimeira To nUltima)
    
 'Preencher a matriz
 For i = nPrimeira To nUltima
    arrTemp(i) = Coll(i - nPrimeira + 1)
 Next i
    
 'Matriz de saída
 RemoverDuplicatasMatriz = arrTemp

End Function


Sub MatrizTeste()
 Dim strNomes(1 To 4) As String
 Dim MatrizSaida() As String
 Dim i As Long
 Dim item As Variant

 'Definir valores iniciais da matriz
 strNomes(1) = "Shelly"
 strNomes(2) = "Steve"
 strNomes(3) = "Neema"
 strNomes(4) = "Steve"
    
 'Chamar a função de Duplicatas
 MatrizSaida= RemoverDuplicatasMatriz(strNomes)
    
 'Valores de saída para a janela imediata (CTRL + G)
 For Each item in MatrizSaida
     Debug.Print item
 Next item

End Sub

Observação: No exemplo, forçamos nossa matriz a começar em 1 (e não em 0). Se sua matriz começar em 0, será necessário modificar um pouco o código.

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

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA