Comparar Duplicados en 2 hojas

Hola, sabes que necesito comparar 2 hojas excel y que en la 1º hoja me indique cuales están duplicadas coloreando la fila. Lo complicado es que debo comparar todos los campos de una fila.
No quiero comparar campo por campo sino que la fila completa de la hoja 1 compararla con la fila competa de la hoja 2.
¿Se puede con alguna macro?

1 Respuesta

Respuesta
1
En mi sitio encontrarás 2 rutinas de comparación que podrás copiar y adaptar a tus referencias.
http://es.geocities.com/lacibelesdepunilla/macros1
Tendrás que agregar tantas opciones como col tengas (no me indicas).
Ej que compara las 3 col de cada registro:
If Cells(fila1, 1) = Cells(fila2, 1) and Cells(fila1, 2) = Cells(fila2, 2) and Cells(fila1, 3)= Cells(fila2, 3) Then
Una vez que la tengas armada para tu libro, podes seguir consultándome si necesitas ayuda para ajustarla.
Gracias Elsa por tu prontitud...
Te cuento que:
1. Son 12 columnas con miles de filas, son bases de datos extensas y no tengo access
2. La instrucción que me envías tendría que replicarla para miles de comparaciones 12 veces... ¿no hay otra manera más limpia?
3. No encontré las rutinas de comparación... ademas no soy un avanzado en macros, pero me gustan los desafíos
Hola ELSA.. aquí yo de nuevo...
Encontré una ayuda tuya que quizás me sirva...
1. Esto compara solo 1 celda o 1 columna (se basa en el rango desde A1) ¿Puede hacerlo comparando la fila completa desde A1?
2. ¿Puede colorear tanto la fila comparada y la repetida?
------------------
Sub Duplicados()
Range("a1").Select
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(-1, 0).Select
ActiveCell.Offset(0, 1).Select
celdaactiva = ActiveCell.Address
Range("a1:" + celdaactiva).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
contador = 0
Valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = Valor Then
Selection.Interior.ColorIndex = 3 '(elegí tu color)
contador = contador + 1
Else
Valor = ActiveCell.Value
End If
ActiveCell.Offset(1, 0).Select
Wend
Respuesta = MsgBox("Se han encontrado " & contador & " elementos repetidos", 1, "Número de repetidos")
Range("a1").Select
End Sub
-----------------------
Esa rutina no te servirá porque primero ordena la tabla tratándose de 1 misma (no en hojas separadas).
Disculpa la demora y lamento no disponer de tiempo para desarrollar nuevas rutinas. Te dejo algunas instrucciones como guía, para que intentes armar una rutina con tus referencias. Luego la probas y me la envías para que te ajuste lo que pudiera estar fallando.
De lo contrario te sugiero que dejes la consulta en el tablón.
sub compara()
'esta recorre la hoja1
While sheets(1).cells(fila1,1) <> ""
'esta recorre la hoja2
while sheets(2).Cells(fila2, 1).Value <> "" and marcador = 0
'compara las 4 col o más
If hoja1.celda1 = hoja2.celda1 and hoja1.celda2 = hoja2.celda2 and..... then
'en tu caso pintará la fila activa de hoja1, ajustá el nro de color
sheets(1).cells(fila1,1).entireRow.interior.colorindex = 3
marcador = 1
else
fila2 = fila2 +1 'incrementa la fila de la hoja2
end if
wend 'repite el bucle para seguir recorriendo la hoja2
'como el marcador indica 1 se debe repetir el bucle para pasar a la siguiente fila de la hoja 1
fila1 = fila1+1
fila2 = 2 (indica la primer fila de la hoja2)
marcador = 0
wend
End sub
Algunas instrucciones, como la de color, podes obtenerla encendiendo la grabadora de macros. REalizás todos los pasos de selección y asignación de color y al detener la grabadora en un módulo encontrarás la instrucción (más detalles en mi sitio).
Muchas gracias Elsa...
Con esto es más que suficiente, y tus respuestas han sido geniales... imaginate que es primera vez que entro a este sitio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas