| Comparación
entre columnas.
En esta lección vamos a ver una macro la cual
nos permitirá comparar dos columnas de elementos, eliminando de
la primera los elementos que existan en la segunda. Esta macro me
la pidieron para hacer borrar muchos elementos de una lista sin
tener que irlos buscando uno a uno. En la primera columna están
todos los elementos que forman parte de la lista y en la segunda
columna se van colocando los elementos que se desean buscar y eliminar
de la primera.
A continuación escribiremos la macro completa
y después explicaremos que realiza cada una de las líneas.
1
Sub Repetidos()
2
Range("B1").Select
3
Posicion = 1
4
While ActiveCell.Value <> ""
5
valorcomparacion = ActiveCell.Value
6
Range("a1").Select
7
Salir = "no"
8
While ActiveCell.Value <> "" And Salir = "no"
9
If ActiveCell.Value = valorcomparacion Then
10
respuesta = MsgBox("¿Deseas borrar esta entrada?", 4, "¡¡Encontrado!!")
11
If respuesta = vbYes Then
12
Selection.Delete Shift:=xlUp
13
End If
14
Salir = "si"
15
Else
16
ActiveCell.Offset(1, 0).Range("A1").Select
17
End If
18
Wend
19
Posicion = Posicion + 1
20
Range("b1").Select
21
ActiveCell.Offset(Posicion - 1, 0).Range("a1").Select
22
Wend
23 End
Sub
Antes de realizar la explicación tenemos que
dejar muy claro que la columna A,
será donde tengamos todos los datos de nuestra lista y la columna
B, los datos que deseamos buscar y eliminar de la primera
columna.
Línea 2: con
esta instrucción nos situamos en la primera celda de la columna
B para empezar a buscar los datos que deseamos borrar.
Línea 3: creamos
una variable llamada Posición para controlar en que fila nos encontramos
de la segunda columna
Línea 4: aquí
creamos un bucle que se repetirá hasta que no se terminen los elementos
a buscar.
Línea 5: creamos
una variable llamada valorcomparacion con la que trabajaremos para
ir comparando los elementos de la primera y segunda columna. El
valor de la celda en la que nos encontramos en la columna B, pasa
a estar en la variable valorcomparacion.
Línea 6: cambiamos
a la columna A para iniciar el proceso de comparación.
Línea 7: creamos
una nueva variable llamada Salir con la que controlaremos si debemos
salir del bucle o no. Solamente saldremos en el momento en el que
se encuentre un elemento que está en la segunda y primera columna.
Línea 8: aquí
iniciamos un bucle que se repetirá hasta que se llegue al final
de la primera columna, (caso que se dará cuando no existan elementos
comunes) o hasta que se encuentre un elemento común, (esto nos lo
indicará la variable Salir).
Línea 9:
en esta línea preguntaremos si la celda en la que nos encontramos
(primera columna) es igual que el valor que tenemos dentro de la
variable: valorcomparacion.
Línea 10: si
se ha producido la coincidencia de elementos procedemos a preguntar
si realmente deseamos borrar este elemento.
Línea 11: miramos
si la respuesta del usuario ha sido afirmativa.
Línea 12: si
el usuario contesta afirmativamente eliminamos la celda y desplazamos
la lista hacía arriba, de esta forma no tenemos huecos en medio
de la lista.
Línea 13: terminamos
la estructura Si que hemos iniciado en la línea 11.
Línea 14: como
se ha localizado un elemento coincidente pondremos la variable Salir
con valor Si.
Línea 15: aquí
empezamos el caso en el que el valor que tenemos seleccionado en
la primera columna con el valor de la variable valorcomparacion
no sea coincidente.
Línea 16: si
no coinciden los datos lo que hacemos es avanzar una posición dentro
de la primera columna.
Línea 17: aquí
terminamos la estructura If iniciada en la línea 9.
Línea 18: terminamos
el bucle iniciado en la línea 8.
Línea 19: incrementamos
en uno el valor de la variable Posicion ya que estamos avanzando
una posición dentro de la segunda columna.
Línea 20: pasamos
a la segunda columna para continuar con la comparación de los elementos.
Línea 21: avanzamos
en la segunda columna tantas veces como se nos indique en la variable
Posicion para iniciar nuevamente el proceso de comparación entre
los elementos de ambas columnas.
Línea 22: terminamos
el bucle principal de esta macro.
Línea 23: terminamos
la macro.
Esta macro es
bastante completa, os recomendamos repasarla cuantas veces creáis
oportunas hasta que quede completamente clara. Para probar la macro
simplemente deberéis copiar una serie de elementos en la primera
columna y en la segunda poner algunos de los elementos que están
en la primera.
[INDICE
LECCIONES] |