Мне нужно сделать Vlookup ID на исходном листе для таблицы в листе данных.Когда Vlookup завершен, он должен вернуть значения ячеек из 6 различных столбцов.
Здесь у меня есть функция для получения диапазона:
Function find_Col(header As String) As Range
Dim aCell As Range, rng As Range, def_Header As Range
Dim col As Long, lRow As Long, defCol As Long
Dim colName As String, defColName As String
Dim y As Workbook
Dim ws1 As Worksheet
Set y = Workbooks("Template.xlsm")
Set ws1 = y.Sheets("Results")
With ws1
Set def_Header = Cells.Find(what:="ID", LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
Set aCell = .Range("B2:Z2").Find(what:=header, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
defCol = def_Header.Column
defColName = Split(.Cells(, defCol).Address, "$")(1)
col = aCell.Column
colName = Split(.Cells(, col).Address, "$")(1)
lRow = Range(defColName & .Rows.count).End(xlUp).Row - 1
Set myCol = Range(colName & "2")
'This is your range
Set find_Col = Range(myCol.Address & ":" & colName & lRow).Offset(1, 0)
'If not found
Else
MsgBox "Column Not Found"
End If
End With
End Function
Затем в моем сабвуфере я выбираюдиапазон и выполнить Vlookup, который заполняет этот диапазон:
Selection.FormulaR1C1 = "=VLOOKUP(RC[-4],myTable,2,FALSE)"
И это прекрасно работает.
Затем мне нужно было вернуть более одного столбца, поэтому я получил формулу:
Selection.FormulaArray = "=VLOOKUP($C3,myTable,{2,3,4,5,6},FALSE)"
Исходный лист: 
Лист данных:

Итак, моя функция возвращает только диапазон для одного столбца, который, я думаю, я могу использовать с точки зрения получения количества строк, используя что-то вроде этого:
Set myRng = find_Col("Product")
For currentRow = myRng.Rows.count To 1 Step -1
Selection.FormulaArray = "=VLOOKUP($C3,myTable,{2,3,4,5,6},FALSE)"
Next currentRow
Тогда, возможно, вместо C3
это может выглядеть примерно так:
C & currentRow
-> Selection.FormulaArray = "=VLOOKUP($C & currentRow,myTable,{2,3,4,5,6},FALSE)"
Но тогда у меня проблема в том, что выбрана только одна ячейка(G3) и от HL нет.И я понятия не имею, является ли это даже правдоподобным усилием.
В идеале, конечно, я бы выделил ячейки G3:L3
и заполнил формулу до последнего ряда.
Мой мозгпросто жарен от всех мыслей и попыток.