Eliminar datos iguales

09/02/2008 - 17:26 por Arianna Gonzalez | Informe spam
Hola que tal
Tengo un listado donde se repitieron varios valores, y me gustaria saber una
forma rapida para poder eliminar de esa columna los valores q se repitan de
antemano gracias :)
 

Leer las respuestas

#1 Héctor Miguel
10/02/2008 - 05:58 | Informe spam
hola, Arianna !

Tengo un listado donde se repitieron varios valores
y me gustaria saber una forma rapida para poder eliminar de esa columna los valores q se repitan...



existen varias formas (dependiendo de necesidades especificas)
las siguientes son como alternativas a la propuesta de AnSanVal

la macro de la op1 es (o debiera ser) +/- rapidita, con alguna que otra (des)ventaja como:
- no es relevante si los datos estan ordenados o no
- puedes modificar un solo dato para la columna o fila de partida
- la funcion de hoja de calculo contar.si no toma en cuenta si son mayusculas/minusculas
- PERO... el rango resultante no puede exceder de 2,048 rangos no-contiguos -?-

la macro de la op2 utiliza los filtros avanzados por codigo (lo que debiera resultar en mayor rapidez)
(como no comentas los rangos, asume titulos en la fila 1, los datos en columna A y usa como criterios el rango C1:C2)

si cualquier duda (o informacion adicional)... comentas?
saludos,
hector.

en un modulo de codigo estandar/general/normal ==
Sub Eliminar_Repetidos()
Dim Repetidos As Range, Col As String, F1 As Long, Fx As Long, Fila As Long
Col = "b"
F1 = 2
Fx = Range(Range(Col & F1), Range(Col & "65536").End(xlUp)).Rows.Count
For Fila = F1 To Fx + F1 - 1
If Application.CountIf(Range(Col & F1 & ":" & Col & Fila), Range(Col & Fila)) > 1 Then
Set Repetidos = Union(Iif(Repetidos Is Nothing, Range(Col & Fila), Repetidos), Range(Col & Fila))
End If
Next
If Repetidos Is Nothing Then Exit Sub
Repetidos.EntireRow.Delete
ActiveSheet.UsedRange
Set Repetidos = Nothing
End Sub

Sub Elimina_Duplicados()
Application.ScreenUpdating = False
Range("c2").Formula = _
"=sumproduct(--(($a$2:a2)=(a2)))>1"
With Range("a1").CurrentRegion
.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Range("c1:c2")
.Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete
End With
ActiveSheet.ShowAllData
Range("c2").ClearContents
ActiveSheet.UsedRange
End Sub

Preguntas similares