Eliminar repetidos

26/01/2005 - 20:21 por jose | Informe spam
Hola a todos.
Me han pasado una hoja con 2000 y pico registros (=filas) que tiene un
montón de ellos repetidos que he de eliminar. Acabo de empezar con VB y he
hecho un modesto procedimiento con lo que sé (o sea nada).

La tabla es así:
Id | Nombre |
34 | JUAN
35 | PEDRO
35 | PEDRO
35 | PEDRO
36 | JOSE
36 | JOSE

Pretendo que me busque por NOMBRE (no por Id) desde el principio de la
columna B hasta el final y me elimine los coincidentes por filas. Es decir,
si JUAN (B1) es igual que B2, que elimine la fila 2, y si es diferente que
pase a la siguiente, y así sucesivamente hasta que no encuentre nada en la
última celda de la columna B.

Ya digo que soy novatísimo, pero con muchas ganas por aprender, y he
intentado hacer esto (no os riaís, plis):
Sub Eliminar_repetidos ()
Range("B2").Select
If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
ActiveCell.Offset(1, 0).EntireRow.Select
Selection.Delete
Else ActiveCell.Offset(1, 0).Select
End If
End Sub

Claro, de la segunda fila no pasa. Sé que hay algo de LOOP o de DO WHILE...
para hacer bucles o algo parecido. He leído cosas pero no me aclaro mucho.
Quizás tampoco esa sea la solución que busco.
¿Alguien sería tan amable de echarme una manita? Gracias por vuestro tiempo
 

Leer las respuestas

#1 Alfredo Espinosa
26/01/2005 - 23:47 | Informe spam
Trate de no modificar mucho tu codigo, para mi gusto no
es la mejor manera, pero creo que asi lo entenderas
mejor. Saludos

Alfredo Espinosa


Sub Eliminar_repetidos()
Range("B2").Select
For k = 1 To Application.CountA(Range("B:B"))
If ActiveCell.Value = ActiveCell.Offset(1, 0).Value
Then
ActiveCell.Offset(1, 0).EntireRow.Select
Selection.Delete
ActiveCell.Offset(-1, 1).Select
Else: ActiveCell.Offset(1, 0).Select
End If
Next k
End Sub



Hola a todos.
Me han pasado una hoja con 2000 y pico registros


(=filas) que tiene un
montón de ellos repetidos que he de eliminar. Acabo de


empezar con VB y he
hecho un modesto procedimiento con lo que sé (o sea


nada).

La tabla es así:
Id | Nombre |
34 | JUAN
35 | PEDRO
35 | PEDRO
35 | PEDRO
36 | JOSE
36 | JOSE

Pretendo que me busque por NOMBRE (no por Id) desde el


principio de la
columna B hasta el final y me elimine los coincidentes


por filas. Es decir,
si JUAN (B1) es igual que B2, que elimine la fila 2, y


si es diferente que
pase a la siguiente, y así sucesivamente hasta que no


encuentre nada en la
última celda de la columna B.

Ya digo que soy novatísimo, pero con muchas ganas por


aprender, y he
intentado hacer esto (no os riaís, plis):
Sub Eliminar_repetidos ()
Range("B2").Select
If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
ActiveCell.Offset(1, 0).EntireRow.Select
Selection.Delete
Else ActiveCell.Offset(1, 0).Select
End If
End Sub

Claro, de la segunda fila no pasa. Sé que hay algo de


LOOP o de DO WHILE...
para hacer bucles o algo parecido. He leído cosas pero


no me aclaro mucho.
Quizás tampoco esa sea la solución que busco.
¿Alguien sería tan amable de echarme una manita? Gracias


por vuestro tiempo



.

Preguntas similares