command lab
  • TOP
  • BLOG
  • Excel

  • 【エクセル】VLOOKUPをVBAで使用する方法

【エクセル】VLOOKUPをVBAで使用する方法

VlookupはExcelの関数ですが、VBAでも使用できます。ここではVBAで使うVLOOKUP関数について解説していきます。VBAでVlookupを使用するにはApplication.WorksheetFunctionを使用します。引数は従来のVLOOKUP関数と同じままです。

VLOOKUPの構文

VBAでもVLOOKUPの関数の設定項目は同じです。

=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 mark 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

次に目的のデータが含まれるテーブルのセル範囲を定義します。データはセルA1:C6に存在するため、範囲を次のように定義します。

Set myrange = Range(" A1:C6")

変数のWorksheet関数を使用してVLOOKUP関数を入力し、次のように記述します。

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の関数をVBAで記述しています。シート内のセルをクリックしたときに、プログラムが動くようになっており、より便利な記述の仕方を解説しているのでおすすめです。

ショートカットキーの練習できます

当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトで定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。

下のスタートボタンを押して練習モードに入ります。
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

PUSH ENTER

関連記事