Зная о параметре VLOOKUP, но предпочел бы понять исправления, приведенные ниже, чтобы использовать LOOP
У меня есть данные на 2 листах, и я использую «рабочий файл»запустить макрос.
wbTP - набор данных назначения и базы.
wbEVAL - это место, откуда будет выполняться чтение макроса.
Оба листа имеют идентификатор оценщика, который служит связующим звеном между двумя листами.
ЦЕЛЬ : Считать идентификатор оценщика, начиная со строки 2, в wbTP и проверить каждую строку столбца идентификатора оценщика в wbEVAL .Если найдено, вернуть поле Complete_Date, найденное в другом столбце той же строки.Если не найдено, ничего не делать.Если найдено и поле пустое, ничего не делайте.
Мой код ниже неисправностей в строке OFFSET, которая пытается вернуть значение.Я все еще относительно новичок в VBA, поэтому я считаю, что мои счетчики используются неправильно.Любая помощь будет оценена.
ПРИМЕР УСТАНОВКИ ДАННЫХ:
wbTP :
CASE ID CREATE DATE EVALUATOR ID COMPLETE DATE
10001 1/2/2019 999 (to be pulled in from wbEVAL)
10002 1/3/2019 998 (to be pulled in from wbEVAL)
10003 2/1/2019 922 (to be pulled in from wbEVAL)
wbEVAL
CASE NAME CASE TYPE EVALUATOR ID COMPLETE DATE
ABC ENG 999 2/2/2019
BZG ENG 998 2/3/2019
BBC PNG 922 3/1/2019
КОД:
Sub CompleteDate()
Dim wbTP As Workbook
Dim wbEVAL As Workbook
Dim wsTP As Worksheet
Dim wsEVAL As Worksheet
Dim iTP As Long
Dim iEVAL As Long
Dim iMACRO As Long
Set wbTP = Workbooks("TP.csv")
Set wbEVAL = Workbooks("EvalTable.csv")
Set wsTP = wbTP.Worksheets.Item("TP")
Set wsEVAL = wbEVAL.Worksheets.Item("EvalTable")
lastrowTP = wbTP.Sheets("TP").Range("c" & Rows.Count).End(xlUp).Row
lastroweval = wbEVAL.Sheets("EvalTable").Range("A" & Rows.Count).End(xlUp).Row
iMACRO = 1
For iTP = 2 To lastrowTP
For iEVAL = 2 To lastroweval
If wsTP.Cells(iTP, 15) = wsEVAL.Cells(iEVAL, 5) Then
wsTP.Range("BB").Offset(iTP, 0) = wsEVAL.Cells(iEVAL, "E")
iMACRO = iMACRO + 1
End If
Next iEVAL
Next iTP
End Sub