簡體   English   中英

使用VLOOKUP從VBA中的多個列返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM