Esta macro funciona siempre y cuando las tablas de la hoja1 y la hoja2 sean exactamente iguales, lo que hará es leer la información de la ambas hojas y creara dos tablas temporales las cuales concatenara en las columnas que indicaste quedándote solo 2 cadenas de datos, las cuales compara de ser iguales las cadenas ira a la hoja 1 y tomara los datos correspondientes a la fila que se repite en ambas hojas y las copiara a la hoja3 además de colorear de verde la hoja1 en aquellos datos que son iguales en ambas hojas.
Esta es la macro
Option Base 1
Sub COPIAR_DATOS()
Set DATOS = Worksheets("HOJA1").Range("A1").CurrentRegion
For I = 1 To 2
Set HD = Worksheets("HOJA" & I).Range("A1").CurrentRegion
With HD
FILAS = .Rows.Count: COL = .Columns.Count
If I = 1 Then Set TABLA = .Columns(COL + 3).Resize(FILAS, 6)
If I > 1 Then Set TABLA = TABLA.Columns(8).Resize(FILAS, 6)
Union(.Columns(1), .Columns(3), .Columns(4), .Columns(6), .Columns(7), .Columns(13)).Copy
End With
With TABLA
.PasteSpecial
FILAS2 = .Rows.Count
ReDim MATRIZ(FILAS)
For J = 1 To FILAS2
MATRIZ(J) = Join(Application.Index(.Rows(J).Value, 1, 0), "|")
Next J
.CurrentRegion.Clear
Range(.Columns(1).Address) = Application.Transpose(MATRIZ)
.CurrentRegion.Name = "TABLA_" & I
End With
Next I
With Range("TABLA_1")
X = 1
For I = 1 To FILAS
INFO = .Cells(I, 1)
CUENTA = WorksheetFunction.CountIf(Range("TABLA_2"), INFO)
If CUENTA = 1 Then
HD.Rows(I).Copy
Sheets("HOJA3").Range("A1").Rows(X).PasteSpecial: X = X + 1
DATOS.Rows(I).Interior.ColorIndex = 4
End If
Next I
End With
Erase MATRIZ
Range("TABLA_1").ClearContents
Range("TABLA_2").ClearContents
Set DATOS = Nothing: Set HD = Nothing
Set TABLA = Nothing: Set TABLA2 = Nothing
End Sub