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.
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:
9/11 Completado! Obtenga más información sobre los bucles>
Capítulo siguiente: Errores de macro