[英]Using VLOOKUP to return values from multiple columns in VBA
好吧,我知道這是非常不正確的。 我收到語法錯誤。 但我正在嘗試找到一種更好的方法來進行此操作。 我想將訂單號與另一個工作表中的訂單號進行匹配,然后將所有數據從那里獲取到我的當前工作表中。
Sub Lookup()
On Error Resume Next
For Each row In Worksheets("batches").Range("B4:B1384")
Result = Application.evaluate("VLOOKUP(row, Worksheets("OrderLvl").Range("C4:DL1384"),{3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116}, FALSE)")
If Result = "Error 2042" Then
'nothing found
End If
Next
On Error GoTo 0
End Sub
您沒有指出要對數據做什么,但是我建議使用Match
代替:
Sub Lookup()
For Each Row In Worksheets("batches").Range("B4:B1384")
result = Application.Match(Row.Value, Worksheets("OrderLvl").Range("C4:C1384"), 0)
If Not IsError(result) Then
Worksheets("OrderLvl").Range("E4:E1384").Cells(result).Resize(, 114).Copy
End If
Next
End Sub
如果您想保留vlookup,我建議在這里使用范圍類型,如下所示:
Dim LookUpRange As Range
Dim row As Range
Set LookUpRange = Worksheets("batches").Range("B4:B1384")
Result = Application.evaluate("VLOOKUP(" & row.row() & "," & LookUpRange & "," & I &",FALSE)")
並將其推入一個循環,該循環遍歷您需要從中獲取數據的大量列,使用I表示“ {{3,4,5,6,7,8,9,10,11,12,13,14,15 ,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 ,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65 ,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90 ,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116},“
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.