我試圖通過創建一個自定義函數並將其作爲加載項加載後,爲INDEX/MATCH查找方法(比常規VLOOKUP方法更快/更好)創建一個包裝。爲什麼IfError返回錯誤?
到目前爲止這麼好,但我期望的行爲是,當沒有找到要查找的值時,它應該返回空白(「」)而不是#VALUE !.所以我試圖用IFERROR WorksheetFunction,以實現在Excel表單這種以同樣的方式我想:
Function FastLookup(parLookupKey As Variant, parLookupRange As Range, parReturnRange As Range) As Variant
FastLookup = Application.WorksheetFunction.IfError(Application.WorksheetFunction.Index(parReturnRange, Application.WorksheetFunction.Match(parLookupKey, parLookupRange, 0)), "")
End Function
同樣,這仍然返回#VALUE!如果在parLookupRange範圍內找不到值。不用說,如果我直接在Excel工作表上使用= IFERROR(FastLookup(H6,E3:E6,F3:F6),「」),它就可以工作。
關於如何使VBA版本的IfError工作的任何想法?
'Application.WorksheetFunction.Match'會導致* VBA運行時錯誤*如果找不到匹配項 - 您無法使用IfError捕獲該類型的錯誤,而是需要使用@scott craner's中顯示的VBA錯誤處理回答。 –