2017-04-12 225 views
-1

我想基於另一個一鍵檢索值Excel工作表,但似乎並沒有被檢索,所以我想知道如果我的代碼是正確的:VLOOKUP在Excel宏

Sheets("Details").Cells(rrow, 9).Value = Application.WorkSheetsFunc.VLookup(Cells(rrow, 4).Value, Sheets("Address").Range("G5693:G5843"), 3, False) 

有人知道如果語法正確或者我的代碼有問題?

+1

'WorkSheetsFunc' ??應該是'WorksheetFunction',只是一個錯字,不要忘記用'Worksheet'來限定'Cells(rrow,4).Value' –

+1

您的查找範圍是單列,但您正在第3列尋找結果的查找範圍。 –

+0

@MarkFitzgerald我將它改爲Range(「A5693:L5843」),但它會提示我一個錯誤,說下標超出範圍 – decemberrobot

回答

2

幾點建議:

資格查找值將細胞(rrow,4)。價值與片材參考。這個單元格屬於哪個表格?否則,它只會引用活動頁。 還要確保代碼中的rrow不爲空。

當通過VLookUp檢索值時,首先檢查在查找列中是否找到查找值,如果是,則繼續進行Vlookup以從所需列中獲取所需值。 考慮到lookup_table是範圍(「A5693:L5843」),查找值必須存在於第一列中,即在這種情況下範圍(「A5693:A5843」)。

If Application.CountIf(Sheets("Address").Range("A5693:A5843"), Cells(rrow, 4).Value) > 0 Then 
    Sheets("Details").Cells(rrow, 9).Value = Application.WorkSheetsFunc.VLookup(Cells(rrow, 4).Value, Sheets("Address").Range("G5693:G5843"), 3, False) 
End If