【エクセル】VLOOKUPをVBAで使用する方法
VLOOKUP関数はExcelの関数ですがVBAでも使用できます。VBAでVLOOKUP関数を使用するにはApplication.WorksheetFunctionを使用します。引数は従来のVLOOKUP関数と同じままです。ここではVBAで使うVLOOKUP関数について解説していきます。
関連リンク
VLOOKUP関数の使い方
VLOOKUP関数の列番号とは?自動で列番号を変更する方法も
VLOOKUP関数で別シートから参照する方法
VLOOKUP関数で「0」やエラーを空白にする方法
VLOOKUP関数を複数条件で検索する方法
HLOOKUPの使い方
VLOOKUP関数の構文
VBAでもVLOOKUP関数の設定項目は同じです。まずは復習しておきましょう。
- 検索値:範囲の最初の列で検索する値をここで指定します。
- 範囲:目的のデータが含まれるテーブルをセル範囲で指定します。
- 列番号:取得したい値が範囲内で何列目にあるかの列番号を指定します。範囲の先頭列は1となります。
- 検索方法:検索値と完全に一致する値だけを検索する場合は FALSE、近似値を含めて検索する場合はTRUEを指定します。省略するとTRUEが設定されます。0か1で設定することもできます。
VLOOKUP関数のVBA使用例1
ExcelVBAでワークシート関数VLOOKUPを呼び出す方法を見てみましょう。
下記のようなテストの結果の表から「A004」の人の点数をVBAを使ったVLOOKUPで取得しメッセージボックスに表示します。

手順1:「開発」タブを選択
「開発」タブを選択します。「開発」タブが見当たらない方は下記リンクの手順に従って「開発」タブを表示してください。
【エクセル】開発タブの表示方法をわかりやすく解説(Win/mac)

手順2:「VisualBasic」を選択
開発タブのメニュー内左側の「VisualBasic」を選択します。

手順3:「挿入」から「標準モジュール」を選択
上部メニュー内の「挿入」から「標準モジュール」を選択します。

手順4:コードを入力
下記のようにコード入力します。

Sub vlookup1()
Dim id As String
Dim marks As Long
id = "A004"
Set myrange = Range(" A1:C6")
marks = Application.WorksheetFunction.VLookup(id, myrange, 3, False)
MsgBox "ID:" & id & "の人は" & marks & "点を獲得しました"
End Sub
上記コードの詳細説明
まず検索値であるIDを文字列型として定義しておきます。
Dim id As String
点数を入れる変数を長整数型として定義します。長整数型とは-2147483648~2147483647の整数を指します。
Dim marks As Long
idに値を代入します。ここで代入する値が検索値となります。
id = "A004"
まず検索値であるIDを文字列型として定義しておきます。
Dim id As String
次に目的のデータが含まれるテーブルのセル範囲を定義します。データはセルA1:C6に存在するため、範囲を次のように定義します。
Set myrange = Range(" A1:C6")
変数のWorksheet関数を使用してVLOOKUP関数を次のように記述します。VLOOKUP関数によって返される値がmarksに代入されます。
marks = Application.WorksheetFunction.VLookup(id, myrange, 3, False)
最後にVLOOKUPで取得したmarksをメッセージボックスで表示させる記述をします。
MsgBox "ID:" & id & "の人は" & marks & "点を獲得しました"
手順5:VBAエディター内の再生ボタンを押下
VBAエディター内の上部メニュー内にある再生ボタンを押下します。

メッセージボックスにメッセージが表示されました。

VLOOKUP関数のVBA使用例2
生徒の名前とテストの点数に関するデータがあるとします。セルD2に名前を指定すると、生徒の点数がセルE2に返されるように、VBAでVLOOKUPのコードを記述する方法について解説します。

手順1:「開発」タブを選択
「開発」タブを選択します。「開発」タブが見当たらない方は下記リンクの手順に従って「開発」タブを表示してください。
【エクセル】開発タブの表示方法をわかりやすく解説(Win/mac)

手順2:「VisualBasic」を選択
開発タブのメニュー内左側の「VisualBasic」を選択します。

手順3:「挿入」から「標準モジュール」を選択
上部メニュー内の「挿入」から「標準モジュール」を選択します。

手順4:コードを入力
下記のようにコード入力します。

Sub vlookup2()
Set myrange = Range("A:B")
Set Name = Range("D2")
Set result = Range("E2")
result.value = Application.WorksheetFunction.VLookup(Name, myrange, 2, False)
End Sub
上記コードの詳細説明
列Aから列Bを範囲として定義します。
Set myrange = Range("A:B")
検索値としての「D2」の値を取得し定義します。
Set Name = Range("D2")
結果を出力するセルを定義します。
Set result = Range("E2")
最後にVLOOKUPで指定した名前で検索し、結果をE2セルに返すコードを記述します。
result.value = Application.WorksheetFunction.VLookup(Name, myrange, 2, False)
手順5:VBAエディター内の再生ボタンを押下
VBAエディター内の上部メニュー内にある再生ボタンを押下します。

入力した名前に対しての点数が表示されました。

VLOOKUP関数のVBA使用例3
生徒の名前とテストの点数に関するデータがあるとします。入力ボックス付きダイアログに指名を入力すると、その人の点数がメッセージボックスに表示されるVBAの作成方法について解説します。もしリストにない名前が入力された場合は「指定した名前は見つかりませんでした」と表示するようにします。

手順1:「開発」タブを選択
「開発」タブを選択します。「開発」タブが見当たらない方は下記リンクの手順に従って「開発」タブを表示してください。
【エクセル】開発タブの表示方法をわかりやすく解説(Win/mac)

手順2:「VisualBasic」を選択
開発タブのメニュー内左側の「VisualBasic」を選択します。

手順3:「挿入」から「標準モジュール」を選択
上部メニュー内の「挿入」から「標準モジュール」を選択します。

手順4:コードを入力
下記のようにコード入力します。

Sub vlookup3()
Dim Name As String
Dim result As Long
Set myrange = Range("A:B")
Name = InputBox(“名前を入力してください")
on Error GoTo Message
check:
result = Application.WorksheetFunction.VLookup(Name, myrange, 2, False)
MsgBox Name & "さんは" & result & "点を獲得しました"
Message:
If Err.Number = 1004 Then
MsgBox(“指定した名前は見つかりませんでした”)
End If
End Sub
上記コードの詳細説明
列Aと列Bを範囲として定義します。
Set myrange = Range("A:B")
名前を入力ボックス付きダイアログで取得します。
Name = InputBox(“名前を入力してください")
VLOOKUPで入力した名前の点数を取得します。
result = Application.WorksheetFunction.VLookup(Name, myrange, 2, False)
メッセージボックスに結果を表示します。
MsgBox Name & "さんは" & result & "点を獲得しました"
名前がみつからなかった際にアラートがでるように記述します。
on Error GoTo Message
check:
result = Application.WorksheetFunction.VLookup(Name, myrange, 2, False)
MsgBox Name & "さんは" & result & "点を獲得しました"
Message:
If Err.Number = 1004 Then
MsgBox(“指定した名前は見つかりませんでした”)
手順5:VBAエディター内の再生ボタンを押下
VBAエディター内の上部メニュー内にある再生ボタンを押下します。

入力した名前に対しての点数が表示され、入力した名前が見つからない際はアラートがでるようになりました

関連リンク
VLOOKUP関数の使い方
VLOOKUP関数の列番号とは?自動で列番号を変更する方法も
VLOOKUP関数で別シートから参照する方法
VLOOKUP関数で「0」やエラーを空白にする方法
VLOOKUP関数を複数条件で検索する方法
HLOOKUPの使い方
おすすめの解説動画
当記事とは違う書き方でVLOOKUPの関数をVBAで記述しています。シート内のセルをクリックしたときに、プログラムが動くようになっており、より便利な記述の仕方を解説しているのでおすすめです。
ショートカットキーの練習できます
当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトで定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。
※推奨ブラウザ Google Chrome