A continuación, veremos un programa en Excel VBA que elimina los duplicados .

Situación:

En la columna A tenemos 10 números. Queremos eliminar los duplicados de estos números y colocar los números únicos en la columna B.

Eliminar duplicados en Excel VBA

1. Primero, declaramos cuatro variables. toAdd de tipo Boolean, uniqueNumbers de tipo Integer, i de tipo Integer yj de tipo Integer.

Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer

2. A continuación, escribimos el primer número de la columna A en la columna B, ya que el primer número siempre es "único".

Cells(1, 2).Value = Cells(1, 1).Value

3. Inicializamos dos variables. Acabamos de agregar un número a la columna B, por lo que inicializamos números únicos con el valor 1. Establecemos en Agregar en Verdadero asumiendo que el siguiente número también debe agregarse (esto no es necesariamente cierto, por supuesto).

uniqueNumbers = 1
toAdd = True

Necesitamos determinar si el segundo número es 'único' o no. Esto se puede hacer de una manera muy sencilla. Solo si el número aún no está en la columna B, el segundo número debe agregarse a la columna B.

4. También necesitamos verificar esto para el tercer número, cuarto número, etc. Comenzamos un ciclo For Next para esto.

For i = 2 To 10

5. Ahora viene la parte más importante del programa. Si el segundo número es igual a uno de los números de la columna B (hasta ahora solo tenemos un número único), establecemos en Agregar como Falso porque en este caso no queremos agregar este número. (no es 'único'). Por el momento, uniqueNumbers sigue siendo igual a 1, pero uniqueNumbers puede ser una lista completa. Para comprobar toda esta lista, necesitamos otro bucle For Next. Nuevamente: si el número que queremos agregar es igual a uno de los números en esta lista, toAdd se establecerá en False y el número no se agregará. Agregue las siguientes líneas de código:

For j = 1 To uniqueNumbers
    If Cells(i, 1).Value = Cells(j, 2).Value Then
        toAdd = False
    End If
Next j

6. Solo si toAdd sigue siendo True y no se establece en False, Excel VBA necesita agregar el número a la columna B. Al mismo tiempo, incrementamos uniqueNumbers en 1 porque ahora tenemos un número único más. Las siguientes líneas de código hacen el trabajo:

If toAdd = True Then
    Cells(uniqueNumbers + 1, 2).Value = Cells(i, 1).Value
    uniqueNumbers = uniqueNumbers + 1
End If

7. Finalmente, establecemos en Agregar a Verdadero asumiendo que se debe agregar el siguiente número (tercer número). Una vez más, esto no es necesariamente cierto.

toAdd = True

8. No olvide cerrar el ciclo.

Next i

9. Coloque su macro en un botón de comando y pruébelo.

Resultado:

Eliminar resultado de duplicados

9/11 Completado! Obtenga más información sobre los bucles>
Capítulo siguiente: Errores de macro