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 Booleano, uniqueNumbers de tipo Entero, i de tipo Entero, y j de tipo Entero.
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 es siempre «único».
Células(1, 2).Valor = Células(1, 1).Valor
3. Inicializamos dos variables. Acabamos de añadir un número a la columna B, así que inicializamos números únicos con el valor 1. Nos ponemos enAdd to True asumiendo que el siguiente número también debe ser añadido (esto no es necesariamente cierto, por supuesto).
uniqueNumbers = 1 toAdd = True
Tenemos que determinar si el segundo número es «único» o no. Esto se puede hacer de una manera muy fácil. Sólo si el número no está ya en la columna B, el segundo número debe ser añadido a la columna B.
4. También tenemos que comprobar esto para el tercer número, el cuarto número, y así sucesivamente. Empezamos un bucle de «For Next» para esto.
Para i = 2 a 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 sólo tenemos un número único), ponemos enAdd a False porque en este caso no queremos sumar este número! (no es ‘único’). Por el momento los Números Únicos siguen siendo iguales a 1, pero los Números Únicos pueden ser una lista completa. Para comprobar esta lista completa, necesitamos otro bucle For Next. De nuevo: si el número que queremos añadir es igual a uno de los números de esta lista, toAdd se pondrá en False y el número no se añadirá. Añade las siguientes líneas de código:
Para j = 1 Para números únicos Si Células(i, 1).Valor = Células(j, 2).Valor Entonces toAdd = Falso Finalizar si Siguiente j
6. Sólo si toAdd sigue siendo True y no está establecido en False, Excel VBA necesita añadir el número a la columna B. Al mismo tiempo, incrementamos los uniqueNumbers en 1 porque ahora tenemos un número único más. Las siguientes líneas de código hacen el trabajo:
Si aAdd = Verdadero entonces Células(números únicos + 1, 2).Valor = Células(i, 1).Valor uniqueNumbers = uniqueNumbers + 1 Finalizar si
7. Finalmente, nos pusimos enAdd to True asumiendo que el siguiente número (tercer número) debe ser añadido. Una vez más, esto no es necesariamente cierto.
toAdd = True
8. No te olvides de cerrar el bucle.
Siguiente…
9. Ponga su macro en un botón de comando y pruébela.
Resultado: