Я полагаю, что следующий код поможет вам понять, как сделать то, что вы хотите достичь, я использовал двойной цикл, чтобы перейти от строки 1 к последней в целевой таблице для сравнения со значениями в исходном листе, а затем передать Значения по мере необходимости:
Sub AmandaTest()
Dim wbSource As Workbook, wbTarget As Workbook
Dim wsS As Worksheet, wsT As Worksheet
Dim vFile As Variant
'Set source workbook
Set wbSource = ThisWorkbook
'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
1, "Select One File To Open", , False)
'if the user didn't select a file, exit sub
If vFile = "" Then Exit Sub
'Set targetworkbook
Set wbTarget = Workbooks.Open(vFile)
'Set Sheets for both Source & Target Workbooks
Set wsS = wbSource.Sheets("Sheet1")
Set wsT = wbTarget.Sheets("Sheet1")
'get the last row with data from both Sheets into variables
LastRowT = wsT.Cells(wsT.Rows.Count, "A").End(xlUp).Row
LastRowS = wsS.Cells(wsS.Rows.Count, "A").End(xlUp).Row
'For instance, copy data from a range in the first workbook to another range in the other workbook
For i = 1 To LastRowT 'loop from row 1 to last on Sheet Target
For x = 1 To LastRowS 'loop from row 1 to last on Sheet Source
If wsT.Range("C" & i).Value = wsS.Range("C" & x).Value And wsT.Range("B" & i).Value = wsS.Range("D" & x).Value Then
'if C = C and B = D then
wsT.Range("D" & i).Value = wsS.Range("B" & x).Value 'pass values into Target Sheet
End If
Next x
Next i
End Sub