Compara dos hojas y los valores repetidos lo envía a una hoja3

Tengo dos hojas con las mismas columnas, hoja1 y hoja2, si los valores que están en la hoja2 esta repetidos en la hoja1, lo corte y lo pegue en la hoja 3, para validar si los valores están repetidos compare 3 columnas (D,E,G).Saludos cordiales.

1 respuesta

Respuesta
1

¿No habíamos corregido la macro para este propósito?

¿O quieres una nueva macro?

En la otra buscábamos la diferencia entre los dos, en esta son las fila repetidas que se encontrar en las dos hojas, y las de la hojo1 una las mueva a la hoja3

Para confirmar, ¿los de la hoja1 que los mueva?

¿Es decir qué los copie en al hoja3 y que los borré de la hoja1?

exacto, muchas gracias

Te anexo la macro

Sub compara1y2()
'por.dam
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
Set h3 = Sheets("Hoja3")
h3.Cells.Clear
h1.Select
k = 2
For i = h1.Range("D" & h1.Rows.Count).End(xlUp).Row To 2 Step -1
    For j = 2 To h2.Range("D" & h2.Rows.Count).End(xlUp).Row
        If h1.Cells(i, "D") = h2.Cells(i, "D") And _
            h1.Cells(i, "E") = h2.Cells(i, "E") And _
            h1.Cells(i, "G") = h2.Cells(i, "G") Then
            h1.Rows(i).Copy h3.Cells(k, "A")
            h1.Rows(i).Delete Shift:=xlUp
            k = k + 1
            Exit For
        End If
    Next
Next
End Sub

Saludos.Dam
Si es lo que necesitas.

sabes necesito que empiece a recorrer desde A4 por que tengo un encabezado y lo otro que en la hoja 3 no borre los registros existentes si no que los empiece a pegar desde el ultimo registro que existe, en la hoja 3 hay 50 registros que lo comience a pegar dese el 51, Saludos y muchas gracias

Cambia por esta macro

Sub compara1y2()
'por.dam
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
Set h3 = Sheets("Hoja3")
h1.Select
k = h3.Range("D" & h1.Rows.Count).End(xlUp).Row + 1
For i = h1.Range("D" & h1.Rows.Count).End(xlUp).Row To 4 Step -1
    For j = 4 To h2.Range("D" & h2.Rows.Count).End(xlUp).Row
        If h1.Cells(i, "D") = h2.Cells(i, "D") And _
            h1.Cells(i, "E") = h2.Cells(i, "E") And _
            h1.Cells(i, "G") = h2.Cells(i, "G") Then
            h1.Rows(i).Copy h3.Cells(k, "A")
            h1.Rows(i).Delete Shift:=xlUp
            k = k + 1
            Exit For
        End If
    Next
Next
End Sub

La probé pero si no encuentra repetidos se para, que puede ser??

Si no hay repetidos no se para, más bien finaliza, solamente copia los repetidos, si no hay repetidos fin de la macro.

Saludos. DAM

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas