
VBAのVLOOKUP関数とは?関数の解説と使用例
はじめに
Excel関数をVBAでも同じ機能を使いたいと思ったことはありますか?
ここでは、Excel関数のVLOOKUP関数をVBAで使う方法について解説していきます。
1.VLOOKUP関数について
1-1.VLOOKUP関数とは
VLOOKUP関数は、
「指定した検索範囲の一番左の列をキーとして、一致した行から指定した列のデータを取得」関数です。
Excelの関数にも同じ名前で似た処理を行う関数が存在します。
1-1-1.Excel関数との違い
Excel関数にも、「VLOOKUP」関数が存在します。処理としては違いはほぼありません。
検索する範囲や件数によっては、Excel関数では処理に時間がかかる場合があります。
1-2.VLOOKUP関数の構文
VLOOKUP関数の構文は、下記のようになります。
WorksheetFunction.Vlookup([検索する値], [検索する範囲], [取得する列番号], [検索方法])。
オプションの説明:
| 検索する値 | どんな文字列を検索したいかを指定 |
| 検索する範囲 | 検索したい範囲を指定 |
| 範囲の列番号 | 取得したい値の列番号を指定 シートではなく、「検索する範囲」で指定した列番号 例) C列~G列まで検索する範囲を指定してE列を取得したい場合は、 「3」を指定。 |
| 検索方法 | FALSE:完全一致する値だけを検索 TRUE :近似値を含めて検索 |
2.VLOOKUP関数の使用例
2-1.基本的な使用例
表1の中から、「東京都」の「人口」値を取得したい場合は、下記の様にします、
表1
| 人口(万人) | 面積(km2) | |
| 茨城県 | 279 | 6098 |
| 栃木県 | 187 | 6408 |
| 群馬県 | 188 | 6362 |
| 埼玉県 | 762 | 3798 |
| 千葉県 | 628 | 5156 |
| 東京都 | 1427 | 2200 |
| 神奈川県 | 922 | 2417 |
Sub main1()
Dim str As String '検索したい文字列を設定
Dim ret As String '検索した結果を設定
str = "東京都"
ret = WorksheetFunction.VLookup(str, Range("B3:D10"), 2, False)
MsgBox (str + "の人口" + ret + "万人です")
End Sub
2-2.特殊な書き方をする場合
2-2-1.別シートの表を指定する場合
実行するシートとは別のシートを指定する場合は、下記のように範囲を指定します。
Sub main2()
Dim str As String '検索したい文字列を設定
Dim ret As String '検索した結果を設定
str = "東京都"
ret = WorksheetFunction.VLookup(str, Worksheets("一覧表").Range("B3:D10"), 2, False)
MsgBox (str + "の人口" + ret + "万人です")
End Sub
2-2-2.複数条件で検索
VLOOKUP関数では複数条件で検索することはできませんが、下記の方法をすることで行うことはできます。
指定する範囲の一番左の列に条件にしたい項目を連結して検索条件にする
例)
入社年と出身地を条件にしたい場合は、表2のように左端に条件を連結した列を作成し、
それを条件としてVLOOKUP関数を使用する
表2.
| 入社年+出身地 | 苗字 | 入社年 | 出身地 |
| 2005東京都 | 安藤 | 2005 | 東京都 |
| 1999北海道 | 井上 | 1999 | 北海道 |
| 2012愛知県 | 宇崎 | 2012 | 愛知県 |
| 2005東京都 | 遠藤 | 2005 | 東京都 |
| 2007東京都 | 尾上 | 2007 | 東京都 |
| 2005鹿児島県 | 甲斐 | 2005 | 鹿児島県 |
| 2015京都府 | 木下 | 2015 | 京都府 |
Sub main3()
Dim str As String
Dim str1 As String '検索したい文字列を設定
Dim str2 As String '検索したい文字列を設定
Dim ret As String '検索した結果を設定
str1 = "2005"
str2 = "東京都"
str = str1 + str2
ret = WorksheetFunction.VLookup(str, Range("A1:D8"), 2, False)
MsgBox (str1 + "年入社、かつ" + str + "出身は" + ret + "さんです")
End Sub
3.最後に
Excelの関数と同じ処理を行える関数は他にもあります。
関数で行うか、VBAの処理で行うかは、行う内容やデータ数によります。
うまく使い分けて活用してください。







コメント