Macro para eliminar filas duplicadas

22/07/2007 - 01:20 por Rucoma | Informe spam
Hola,
Tengo una lista de más de 1000 registros de la que tengo que quedarme
con las filas NO duplicadas. Es decir:

Tabla origen:

A B C
1 X Y Z
2 X Y A
3 X Y Z

Tabla resultado:

A B C
1 X Y A

Las filas que sean exactamente iguales en todas las columnas deben
eliminarse (ambas).
Alguien me podría echar un cable con este tema?
Muchas gracias y saludos,
Rubén

Preguntas similare

Leer las respuestas

#1 Ivan
22/07/2007 - 03:08 | Informe spam
On 22 jul, 01:20, Rucoma wrote:
Hola,
Tengo una lista de más de 1000 registros de la que tengo que quedarme
con las filas NO duplicadas. Es decir:

Tabla origen:

A B C
1 X Y Z
2 X Y A
3 X Y Z

Tabla resultado:

A B C
1 X Y A

Las filas que sean exactamente iguales en todas las columnas deben
eliminarse (ambas).
Alguien me podría echar un cable con este tema?
Muchas gracias y saludos,
Rubén



hola Ruben,

una forma sin recurrir a macros ( y si tu lista tiene menos de 127
columnas) podria ser con filtros avanzados:

selecciona una celda dentro de tu lista -> menu Datos -> Filtro ->
Filtros avanzados -> una vez en el cuadro de dialogo de filtros
avanzados selecciona 'Copiar a otro lugar' ->, seguramente el cuadro
'Rango de la lista' coincidira con tu lista, si no es asi introducela/
buscala. -> Si hay algo en el cuadro 'Rango de criterios' borralo. ->
En el cuadro 'Copiar a' escribe/selecciona la ref de la 1ª celda de la
2ª columna tras tu lista (es decir deja al menos una vacia entre
medias) -> marca la opcion 'Solo registros unicos' y dale a aceptar.

se te deberia haber generado una nueva listacon los registros unicos a
partir de la celda que hayas indicado en 'Copiar a'. Ahora puedes
copiar esta nueva lista a donde quieras

espero te ayude
un saludo
Ivan
Respuesta Responder a este mensaje
#2 Rucoma
22/07/2007 - 10:59 | Informe spam
Gracias por tu ayuda, el método ya lo conocía y no me sirve ya que me
deja registros unicos (si un registro está dos veces al filtrar me
deja uno) y yo lo que quiero es que los elimine todos, por eso
necesito una macro.
Gracias y saludos,
Rubén
On 22 jul, 03:08, Ivan wrote:
On 22 jul, 01:20, Rucoma wrote:



> Hola,
> Tengo una lista de más de 1000 registros de la que tengo que quedarme
> con las filas NO duplicadas. Es decir:

> Tabla origen:

> A B C
> 1 X Y Z
> 2 X Y A
> 3 X Y Z

> Tabla resultado:

> A B C
> 1 X Y A

> Las filas que sean exactamente iguales en todas las columnas deben
> eliminarse (ambas).
> Alguien me podría echar un cable con este tema?
> Muchas gracias y saludos,
> Rubén

hola Ruben,

una forma sin recurrir a macros ( y si tu lista tiene menos de 127
columnas) podria ser con filtros avanzados:

selecciona una celda dentro de tu lista -> menu Datos -> Filtro ->
Filtros avanzados -> una vez en el cuadro de dialogo de filtros
avanzados selecciona 'Copiar a otro lugar' ->, seguramente el cuadro
'Rango de la lista' coincidira con tu lista, si no es asi introducela/
buscala. -> Si hay algo en el cuadro 'Rango de criterios' borralo. ->
En el cuadro 'Copiar a' escribe/selecciona la ref de la 1ª celda de la
2ª columna tras tu lista (es decir deja al menos una vacia entre
medias) -> marca la opcion 'Solo registros unicos' y dale a aceptar.

se te deberia haber generado una nueva listacon los registros unicos a
partir de la celda que hayas indicado en 'Copiar a'. Ahora puedes
copiar esta nueva lista a donde quieras

espero te ayude
un saludo
Ivan
Respuesta Responder a este mensaje
#3 julian-vlc-sp
22/07/2007 - 13:41 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.

Si lo tienes que hacer muchas veces, al igual necesitas un macro y ahí no
puedo ayudarte.

Si es solo una vez, o de vez en cuando que tienes que hacerlo, puedes probar
lo siguiente:

En la columna D puedes poner

¡&B1&C1

en la columna E puedes poner

=CONTAR.SI($D$1:$D$5;D1)

Después ordena los datos por la columna E y tendrás las filas preparadas
para eliminar fácilmente las que desees.


SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"Rucoma" escribió en el mensaje
news:
Hola,
Tengo una lista de más de 1000 registros de la que tengo que quedarme
con las filas NO duplicadas. Es decir:

Tabla origen:

A B C
1 X Y Z
2 X Y A
3 X Y Z

Tabla resultado:

A B C
1 X Y A

Las filas que sean exactamente iguales en todas las columnas deben
eliminarse (ambas).
Alguien me podría echar un cable con este tema?
Muchas gracias y saludos,
Rubén
Respuesta Responder a este mensaje
#4 Rucoma
22/07/2007 - 13:55 | Informe spam
Julián,
He probado tu solución y va muy bien. El problema es que es un
procedimiento que no tengo que hacer yo, si no otra persona de mi
trabajo y no tiene muchas ganas de andar ponindo formulas (supongo que
entiendes a lo que me refiero ;-)). Por eso necesito una macro, porque
de esta manera le da a un boton y tiene l problema solucionado.
Gracias por tu valiosa ayuda.
Rubén

On 22 jul, 13:41, "julian-vlc-sp" wrote:
> ¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.
>
Si lo tienes que hacer muchas veces, al igual necesitas un macro y ahí no
puedo ayudarte.

Si es solo una vez, o de vez en cuando que tienes que hacerlo, puedes probar
lo siguiente:

En la columna D puedes poner

¡&B1&C1

en la columna E puedes poner

=CONTAR.SI($D$1:$D$5;D1)

Después ordena los datos por la columna E y tendrás las filas preparadas
para eliminar fácilmente las que desees.

SALUDOS.
Julián-Valencia-Españahttp://ijulian.iespana.es/

"Rucoma" escribió en el mensajenews:
Hola,
Tengo una lista de más de 1000 registros de la que tengo que quedarme
con las filas NO duplicadas. Es decir:

Tabla origen:

A B C
1 X Y Z
2 X Y A
3 X Y Z

Tabla resultado:

A B C
1 X Y A

Las filas que sean exactamente iguales en todas las columnas deben
eliminarse (ambas).
Alguien me podría echar un cable con este tema?
Muchas gracias y saludos,
Rubén
Respuesta Responder a este mensaje
#5 Ivan
23/07/2007 - 00:01 | Informe spam
hola Ruben,

disculpa pero no habia entendido bien el mensaje, mira a ver si te vale la macro que te pongo al final

elimina todos los registros repetidos (por cierto si solo pudiera haber 2 filas iguales se podria hacer creo que mas
rapida), sean 2 o 200

aunque estoy convencido de que se podria hacer con otros metodos probablemente mas eficientes, estoy un poco espeso y no
lo he logrado mas que asi.

de todas formas con alrededor de 1500 registros y un nº variable de repetidos y/o repeticiones a mi me ha tardado un
pispas

esta hecha para el ej. que pones columnas a:c y empezando en la fila 2 (en la 1 los titulos), si las condiciones son
otras tendrias que adaptarlo

un saludo y si quieres comentas como te ha ido
Ivan

Sub Eliminar_Duplicados()
Dim n As Integer, uf As Long, c As Byte, Celda As Range, _
f As Long, unico As Boolean
With ActiveSheet
uf = .[a65536].End(xlUp).Row
n = 2
.Range("a1:c" & uf).Sort _
key1:=.[a2], order1:=xlAscending, _
key2:=.[b2], order2:=xlAscending, _
key3:=.[c2], order3:=xlAscending, _
header:=xlYes
Do
unico = False
uf = .[a65536].End(xlUp).Row + 1
For c = 1 To 3
If Application.CountIf(.Range(.Cells(n - 1, c), _
.Cells(uf, c)), .Cells(n, c).Value) < 2 Then
unico = True: Exit For
Else
For Each Celda In .Range(.Cells(n + 1, c), .Cells(uf, c))
If Celda <> Celda.Offset(-1, 0) Then _
f = Celda.Row - 1: Exit For
Next
If f <= n Then
unico = True
Exit For
Else
uf = f
End If
End If
Next
If Not unico Then .Range("a" & n & ":a" & f) _
.EntireRow.Delete Else n = n + 1
Loop Until .Range("a" & n) = ""
End With
End Sub

"Rucoma" escribió en el mensaje news:
Julián,
He probado tu solución y va muy bien. El problema es que es un
procedimiento que no tengo que hacer yo, si no otra persona de mi
trabajo y no tiene muchas ganas de andar ponindo formulas (supongo que
entiendes a lo que me refiero ;-)). Por eso necesito una macro, porque
de esta manera le da a un boton y tiene l problema solucionado.
Gracias por tu valiosa ayuda.
Rubén

On 22 jul, 13:41, "julian-vlc-sp" wrote:
> ¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.
>
Si lo tienes que hacer muchas veces, al igual necesitas un macro y ahí no
puedo ayudarte.

Si es solo una vez, o de vez en cuando que tienes que hacerlo, puedes probar
lo siguiente:

En la columna D puedes poner

¡&B1&C1

en la columna E puedes poner

=CONTAR.SI($D$1:$D$5;D1)

Después ordena los datos por la columna E y tendrás las filas preparadas
para eliminar fácilmente las que desees.

SALUDOS.
Julián-Valencia-Españahttp://ijulian.iespana.es/

"Rucoma" escribió en el mensajenews:
Hola,
Tengo una lista de más de 1000 registros de la que tengo que quedarme
con las filas NO duplicadas. Es decir:

Tabla origen:

A B C
1 X Y Z
2 X Y A
3 X Y Z

Tabla resultado:

A B C
1 X Y A

Las filas que sean exactamente iguales en todas las columnas deben
eliminarse (ambas).
Alguien me podría echar un cable con este tema?
Muchas gracias y saludos,
Rubén
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida