VBAで自作関数を作ってVLOOKUPをちょっとだけ使いやすくする


VLOOKUP使っていますか?
SEであればほぼ必須なこの関数なのですが、ちょっとクセがあって使いにくいと思います。

今回はVLOOKUPをちょっとだけ使いやすくする自作関数をVBAで作成してみましたので紹介します。

Public Function VLOOKUPEX(needle As String, search_range As Range, return_array, Optional if_not_find = "") As String
Dim cell As Range
Dim i As Long
i = 1
For Each cell In search_range
If cell.Value = needle Then
VLOOKUPEX = return_array(i).Value
Exit Function
End If
i = i + 1
Next
VLOOKUPEX = if_not_find
End Function

今のところ完全一致だけにしか対応していないですが、これを定義して、ワークシート上で

=VLOOKUPEX("検索対象", "A1:A100", "B1:B100", "見つからない場合")

という感じで使うと、

見つかった場合はVLOOKUPと同様に見つかった行に対する値
見つからない場合は見つからない場合
が出力されます。