|
Elementos
repetidos.
En lecciones anteriores hemos visto como movernos
por una lista y como eliminar algunos de ellos según nos conviniera.
Pues bien, ahora vamos a ver como podríamos utilizar estas dos cosas
vistas en lecciones anteriores para poder eliminar elementos repetidos
de una lista.
Eliminar
elementos repetidos en una lista.
Vamos ha realizar una
macro la cual nos vayamos desplazando por una lista, hasta encontrar
un elemento vacío e ir comprobando si un elemento es igual al anterior,
si esto es así lo eliminaremos y "subiremos" un lugar
la lista para que así no existan lugares vacíos en la lista
El único requisito que
hay que cumplir para realizar esta macro es que la lista debe estar
completamente ordenada.
Sub EliminarRepetidos()
contador = 0
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
Selection.Delete Shift:=xlUp
contador = contador + 1
Else
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
End If
Wend
Respuesta = MsgBox("Se han encontrado " & contador & " elementos
repetidos", 1, "Número de repetidos")
End Sub
En esta macro estamos
utilizando una variable llamada contador la cual nos servirá para
contabilizar el número de elementos repetidos que encontramos en
la lista. Este valor lo mostramos al finalizar la macro y lo incluimos
dentro de un mensaje.
Eliminar
elementos repetidos en una lista y realizar un registro
En la primera macro
que hemos mostrado en esta página eliminamos todos los elementos
que aparecen repetidos dentro de una lista quedando uno solo de
todos los elementos repetidos. Según para que realizásemos este
proceso nos podría interesar llevar un control de la cantidad de
elementos que estaban repetidos, por esto sería conveniente crear
en una hoja nueva un registro de cual es el elemento repetido y
el número de veces que aparecía dentro de la lista. Tenemos
que tener prensente que en el registro sólo aparecerán
aquellos elementos que se repiten más de una vez.
La macro siguiente necesita
que los elementos estén ordenados en una primera hoja y que la segunda
hoja esté vacía, ya que será aquí donde se realizará el registro
de los elementos repetidos.
Sub EliminarRepetidosYRegistro()
contador = 1
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
ActiveSheet.Next.Select
If ActiveCell.Value <> valor Then
ActiveCell.Offset(1, 0).Range("a1").Select
ActiveCell.Value = valor
End If
ActiveSheet.Previous.Select
Selection.Delete Shift:=xlUp
contador = contador + 1
Else
If contador <> 1 Then
ActiveSheet.Next.Select
ActiveCell.Offset(0, 1).Range("a1").Select
ActiveCell.Value = contador
ActiveCell.Offset(0, -1).Range("a1").Select
ActiveSheet.Previous.Select
End If
contador = 1
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
End If
Wend
If contador <> 1 Then
ActiveSheet.Next.Select
ActiveCell.Offset(0, 1).Range("a1").Select
ActiveCell.Value = contador
ActiveCell.Offset(0, -1).Range("a1").Select
ActiveSheet.Previous.Select
End If
End Sub
Sería conveniente prestarle
mucha atención a esta macro para poder ver y entender como está
realizada.
Eliminar
elementos repetidos en una lista y realizar un registro contabiliza
elementos únicos
Esta macro es una variación
de la anterior, pero también realizamos una contabilización
de los elementos únicos.
Sub EliminarRepetidosYRegistro()
contador = 1
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor
Then
ActiveSheet.Next.Select
If ActiveCell.Value
<> valor Then
ActiveCell.Offset(1, 0).Range("a1").Select
ActiveCell.Value = valor
End If
ActiveSheet.Previous.Select
Selection.Delete
Shift:=xlUp
contador
= contador + 1
Else
If contador
= 1 Then
ActiveSheet.Next.Select
ActiveCell.Offset(1, 0).Range("a1").Select
ActiveCell.Value = valor
ActiveCell.Offset(0, 1).Range("a1").Select
ActiveCell.Value = contador
ActiveCell.Offset(0, -1).Range("a1").Select
ActiveSheet.Previous.Select
End If
If contador
<> 1 Then
ActiveSheet.Next.Select
ActiveCell.Offset(0, 1).Range("a1").Select
ActiveCell.Value = contador
ActiveCell.Offset(0, -1).Range("a1").Select
ActiveSheet.Previous.Select
End If
contador
= 1
valor =
ActiveCell.Value
ActiveCell.Offset(1,
0).Range("A1").Select
End If
Wend
If contador <> 1 Then
ActiveSheet.Next.Select
ActiveCell.Offset(0, 1).Range("a1").Select
ActiveCell.Value = contador
ActiveCell.Offset(0, -1).Range("a1").Select
ActiveSheet.Previous.Select
End If
End Sub
Sería conveniente prestarle
mucha atención a esta macro para poder ver y entender como está
realizada.
[INDICE
LECCIONES] |