私は、カスタム関数を作成し、後でアドインとしてロードすることにより、INDEX/MATCHルックアップメソッド(これは通常のVLOOKUPメソッドより高速/優れています)のラッパーを作成しようとしています。IfErrorがエラーを返すのはなぜですか?
これまでのところ良くなったが、私の望む動作は、検索する値が見つからない場合、空白( "")で#VALUE!だから私は、Excelシート上で、私は希望これと同じ方法を達成するために、IFERROR WorksheetFunctionを使用しようとしています:
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の範囲に値が見つからない場合
言うまでもなく、IFERROR(FastLookup(H6、E3:E6、F3:F6)、 ")をExcelシートに直接使用すると、動作します。
IfErrorのVBAバージョンを作成する方法に関するアイデアはありますか?
'Application.WorksheetFunction.Match'は、一致するものが見つからない場合に* VBAランタイムエラー*を発生させます。そのタイプのエラーを' IfError'でトラップすることはできませんが、代わりに@scott cranerのようにVBAエラー処理を使用する必要があります回答。 –