Te anexo la macro
Sub procesar()
'Por.Dante Amor
Application.ScreenUpdating = False
Application.StatusBar = False
Set l1 = ThisWorkbook
Set h1 = l1.ActiveSheet
libro = h1.[M1]
hoja = h1.[M2]
col = h1.[M3]
'
If libro = "" Then
MsgBox "Captura el libro destino"
Exit Sub
End If
If hoja = "" Then
MsgBox "Captura la hoja destino"
Exit Sub
End If
If col = "" Then
MsgBox "Captura la columna origen"
Exit Sub
End If
existe = False
For Each h In Workbooks
If LCase(h.Name) = LCase(libro) Then
existe = True
Exit For
End If
Next
If existe = False Then
MsgBox "No está abierto el libro: " & libro2
Exit Sub
End If
'
existe = False
Set l2 = Workbooks(libro)
For Each h In l2.Sheets
If LCase(h.Name) = LCase(hoja) Then
existe = True
Exit For
End If
Next
If existe = False Then
MsgBox "La hoja destino no existe en el libro destino"
Exit Sub
End If
Set h2 = l2.Sheets(hoja)
'
u = h1.Range("A" & Rows.Count).End(xlUp).Row
For i = 4 To u
Application.StatusBar = "Procesando registro : " & i & " de : " & u
dia = Day(h1.Cells(i, "A"))
mes = Month(h1.Cells(i, "A"))
año = Year(h1.Cells(i, "A"))
fecha = DateSerial(2016, mes, dia)
Set b = h2.Columns("A").Find(fecha, lookat:=xlWhole)
If Not b Is Nothing Then
fila = b.Row
Set b = h2.Rows(1).Find("a" & año, lookat:=xlWhole)
If Not b Is Nothing Then
cold = b.Column
h2.Cells(fila, cold) = h1.Cells(i, col)
End If
End If
Next
Application.StatusBar = False
MsgBox "Fin"
End Sub
.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
.
Avísame cualquier duda
.