Я пытаюсь сопоставить значения в двух столбцах из двух разных листов в одной книге. Я создал два словаря, каждый из которых содержит нужное мне значение и номер строки. Мне нужно go через каждую строку в столбце «A» на листе 2 и посмотреть, есть ли соответствующее значение в столбце «А» на листе 1. Я сделал словарь, содержащий значения столбца «A» из листа 2 и то же самое для листа 1. (мне может понадобиться только один словарь, сделанный из листа 2, а затем go через столбец «А» в листе 1).
Если есть совпадение, я хочу скопировать значение из столбца «P» из соответствующей строки из листа1 и вставить в лист2 столбец «F».
Пример:
лист1 - столбец = "A" - row = 5 -value = ab c
sheet2 - column = "A" - row = 20 - value = ab c
Если есть совпадение на листе Sheet1 мне нужно взять значение ячейки из «P» в строке 20 и вставить в лист2 в строке 5. Поэтому важно, чтобы вставленное значение было вставлено в нужное место.
Sub Risk()
' 1 = Product Master
' 2 = Fund Universe
Const START_ROW_1 = 7
Const START_ROW_2 = 13
Const MAX_ROW = 2000
Const PID_1 = "A"
Const PID_2 = "A"
Dim wb As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim iRow As Long, iLastRow As Long, iTargetRow As Long, iCopyRow As Long
Dim rng As Range, count As Long, countWB As Integer
Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1")
Set ws2 = wb.Sheets("Sorteret")
Dim dict1 As Object, dict2 As Object
Dim skey1 As String, skey2 As String
Dim arPID1 As Variant, arPID2 As Variant
Set dict1 = CreateObject("Scripting.Dictionary")
Set dict2 = CreateObject("Scripting.Dictionary")
' Get PENSION ID SHEET 1
iLastRow = ws1.Cells(Rows.count, PID_1).End(xlUp).Row
For iRow = 7 To iLastRow
skey1 = ws1.Cells(iRow, PID_1)
If dict1.Exists(skey1) Then
dict1(skey1) = dict1(skey1) & ";" & iRow
Else
dict1(skey1) = iRow
End If
Debug.Print dict1(skey1)
Next
' Get PENSION ID SHEET 2
iLastRow = ws2.Cells(Rows.count, PID_2).End(xlUp).Row
For iRow = 13 To iLastRow
skey2 = ws2.Cells(iRow, PID_2)
If dict2.Exists(skey2) Then
dict2(skey2) = dict2(skey2) & ";" & iRow
Else
dict2(skey2) = iRow
End If
Debug.Print skey2, dict2.count
Next
End sub