Crear macro en excel para datos coincidentes entre dos libros y pegar columnas de los coincidentes

Tengo dos libros de excel, en uno libro1 y hoja Resumen tengo las columnas "cuenta" (A2) con tamaño variable, BI (C2), Homog (D2) y INT (E2) y finalmente en el libro2 y hoja Contabilidad tengo la columna "Cuenta_princ" (G15) que si coincide con la del libro1 entonces pego los datos del libro1 las columnas C, D y E en las columnas L, M N del libro2.

He encontrado algunas macros parecidas pero ninguna que me solucione el problema.

1 respuesta

Respuesta

Suponiendo que la columna B esta vacía lo mismo que la columna F una solución puede ser la siguiente: en el libro1 colocas la siguiente macro y después abres el libro2, la macro buscara los datos de ambos libros a partir de la fila g15 y realizara una búsqueda sobre el libro1 en la misma columna si encuentra datos coincidentes los copiara al libro 2 en los rangos que señalaste, ve al final la imagen de como queda el resultado final.

Por cierto yo llame a los dos libros libro11.xlsm y libro22.xlsm, si en tus libros son diferentes nombres antes de correr la macro cambialos de lo contrario te marcara error.

Sub cotejar_datos()
Set libro1 = Workbooks("libro11.xlsm").Worksheets("hoja1")
Set rango1 = libro1.Range("c2").CurrentRegion
Set lista1 = libro1.Range("g15").CurrentRegion

Set libro2 = Workbooks("libro22.xlsm").Worksheets("contabilidad")
Set rango2 = libro2.Range("g15").CurrentRegion

With rango2
filas = .Rows.Count
For i = 1 To filas
valor = rango2.Cells(i, 1)
On Error Resume Next
busca = WorksheetFunction.Match(valor, lista1, 0)
If Err.Number > 0 Then GoTo siguiente
On Error GoTo 0
celda = rango2.Cells(i, 1).Address
libro2.Range(celda).Offset(0, 5).Resize(1, rango1.Columns.Count).Value = _
libro1.Range(celda).Offset(0, -4).Resize(1, rango1.Columns.Count).Value
siguiente:
Next i
End With

end sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas