Cursos gratis en Área Interactiva

En Área Interactiva cursos gratis Office "Microsoft Office" y "OpenOffice"
Principal
¿Quien somos?
Boletín novedades
Contacta
Recomienda areaint
 
Zona usuarios
Alta usuarios
Recursos usuarios
Recordar contraseña
 
Blog de areaint
 
Recursos
Agencias de viajes
Sigue la historia
Funciones Excel
Programación PHP
Profesor particular
Cursos gratis
 
 
 
 

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]


Otras webs de XavAl multimedia

- Conoce todos los secretos de las Funciones de Excel (www.funcionesexcel.com) -
- Lee y escribe en Sigue la historia, web de literatura colaborativa (www.siguelahistoria.com) -
- Cursos gratis Microsoft Office y OpenOffice (www.areaint.com) -