Eliminar filas con elementos duplicados

01/09/2008 - 19:15 por Ricardo | Informe spam
Hola tengo el siguiente problema, tengo un libro de excel con elementos
repetidos, encontre dos codigos pero se me hace que solo funciona con pocas
lineas.

Ya que nada mas eliminan algunas.

Espero me puedan ayudar, les dejo los codigos, gracias

' Desactivar la actualización de pantalla para acelerar la macro.
Application.ScreenUpdating = False

' Obtener un recuento de los registros en los que buscar.
iListCount = Sheets("Indicadores Internas").Range("C6:C1000").Rows.Count
Sheets("Indicadores Internas").Range("A6:AH1000").Select ' Recorrer en bucle
hasta el final de los registros.
Do Until ActiveCell = "" ' Recorrer en bucle los registros.
For iCtr = 1 To iListCount ' No comparar contra sí mismo. ' Para especificar
una columna diferente, cambie el valor 1 en el número de columna.
If ActiveCell.Row <> Sheets("Indicadores Internas").Cells(iCtr, 1).Row Then
' Comparar el registro siguiente.
If ActiveCell.Value = Sheets("Indicadores Internas").Cells(iCtr, 1).Value
Then ' Si la coincidencia es verdad, eliminar la fila.
Sheets("Indicadores Internas").Cells(iCtr, 1).Delete xlShiftUp ' Contador de
incrementos para contar la fila eliminada.
iCtr = iCtr + 1
End If
End If
Next iCtr ' Ir al registro siguiente.
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
MsgBox "Listo!"
End Sub

______________________________________________________________

Sub borrar_menos1()
Dim a() As String, rng As Range, str As String, i As Long, r As Range
Set rng = Range("C6", Range("C65536").End(xlUp))
start:
For Each r In rng
If Application.CountIf(Range("C6:C" & r.Row), r) > 1 Then
i = i + 1
ReDim Preserve a(1 To i)
a(i) = r.Address(0, 0)
If i = 50 Then
str = Join(C, ",")
Range(str).EntireRow.Delete
i = 0
Erase C
GoTo start
End If
End If
Next
str = Join(C, ",")
If str <> "" Then
Range(str).EntireRow.Delete
End If
Erase C
End Sub
_____________________________________________________
 

Leer las respuestas

#1 Héctor Miguel
01/09/2008 - 22:32 | Informe spam
hola, Ricardo !

... tengo un libro de excel con elementos repetidos
encontre dos codigos pero se me hace que solo funciona con pocas lineas.
Ya que nada mas eliminan algunas.
Espero me puedan ayudar, les dejo los codigos (...)



de los codigos que expones, me parece que el primero "viene" de esta pagina:
-> macro publicada en http://support.microsoft.com/kb/240077/es

pero... tienen un error al considerar necesario un aumento en la cuenta de filas eliminadas
la forma de algoritmo que utilizan (en realidad) requiere de un decremento para la siguiente fila (luego de eliminar la anterior)
-> si quieres continuar con los ejemplos citados ahi... solo cambia de sumar... a restar la unidad para "la siguiente fila"...
en la linea siguiente al comentario que dice: " Increment counter to account for deleted row. " -> cambialo:
de: -> iCtr = iCtr + 1
a: -> iCtr = iCtr - 1

nota: si haces una busqueda por consultas anteriores en el foro... descubriras una amplia gama de algoritmos similares
(algunos seran mas rapidos que otros... dependiendo de otras necesidades, y conociendo mas detalles de tu realidad)

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

Preguntas similares