VBA – Eliminar Duplicados de un Array/Matriz

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on abril 28, 2023

Este tutorial le enseñará cómo eliminar duplicados de un Array en VBA.

Eliminar Duplicados

La forma más fácil de eliminar duplicados de un Array en VBA es asignar los valores del Array a una Colección en VBA y luego pasar los valores de vuelta a un Array. Las Colecciones no permiten valores duplicados y por lo tanto utilizando una Colección, podemos eliminar duplicados de un arreglo. Hemos creado una función para realizar esta tarea:

Function RemoverDuplicadosEnArray(MyArray As Variant) As Variant
    Dim nFirst As Long, nLast As Long, i As Long
    Dim item As String
    
    Dim arrTemp() As String
    Dim Coll As New Collection

    'Obtener la primera y la última posición del Array
    nFirst = LBound(MyArray)
    nLast = UBound(MyArray)
    ReDim arrTemp(nFirst To nLast)

    'Convertir array en cadena
    For i = nFirst To nLast
        arrTemp(i) = CStr(MyArray(i))
    Next i
    
    'Rellenar la colección temporal
    On Error Resume Next
    For i = nFirst To nLast
        Coll.Add arrTemp(i), arrTemp(i)
    Next i
    Err.Clear
    On Error GoTo 0

    'Redimensionar array
    nLast = Coll.Count + nFirst - 1
    ReDim arrTemp(nFirst To nLast)
    
    'Rellenar Array
    For i = nFirst To nLast
        arrTemp(i) = Coll(i - nFirst + 1)
    Next i
    
    'Array resultante
    RemoverDuplicadosEnArray = arrTemp

End Function


Sub ArrayTest()
    Dim strNames(1 To 4) As String
    Dim outputArray() As String
    Dim i As Long
    Dim item As Variant

    'Establecer los valores iniciales de la matriz
    strNames(1) = "Shelly"
    strNames(2) = "Steve"
    strNames(3) = "Neema"
    strNames(4) = "Steve"
    
    'Llamar función Dup
    outputArray = RemoverDuplicadosEnArray(strNames)
    
    'Salida de valores a Ventana Inmediata (CTRL + G)
    For Each item In outputArray
        Debug.Print item
    Next item

End Sub

Nota: En el ejemplo hemos forzado nuestro Array para que empiece en 1 (no en 0). Si tu array empieza en 0 tendrás que modificar el código ligeramente.

Observe que convertimos el contenido del array en una cadena. Si es necesario, puede volver a convertir las cadenas a enteros una vez finalizado el proceso.

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples