Excelでは、表形式のデータから特定の情報を検索・取得する場面が多くあります。
特に、「名前に対応する売上金額」や「商品に対応する単価」など、関連表からの値の取得は定型業務において頻出の作業です。
本記事では、VBAからVLOOKUP
関数を呼び出して目的のデータを検索し、対応する値を取得する方法をご紹介いたします。エラー処理も加えて、実務でも安心して使える形に仕上げております。
目次
想定される活用例
- 名前やIDを指定して、該当する売上・点数・数量などを取得したい。
- 表形式で整理されたデータから、対応する値を素早く抜き出したい。
- データが存在しない場合にもエラーを回避して処理したい。
VBAコードの例
以下のコードでは、「森」という名前に対応する売上金額を、範囲 C2:E11
の中から検索し、3列目の金額を取得してメッセージで表示します。
Sub LookupSalesByName()
Dim lookupName As String
Dim salesAmount As Long
lookupName = "森"
On Error GoTo ErrHandle
salesAmount = WorksheetFunction.VLookup( _
lookupName, _
Range("C2:E11"), _
3, False)
MsgBox lookupName & "の売上金額は " & salesAmount & " 円です。", vbInformation
Exit Sub
ErrHandle:
MsgBox "該当する名前は見つかりませんでした。", vbExclamation
End Sub
コードの解説
処理項目 | 説明 |
---|---|
VLookup(lookupName, Range, 3, False) | 指定した名前と一致する行の「3列目」の値を取得します(Falseは完全一致)。 |
On Error GoTo ErrHandle | データが存在しない場合でも処理が止まらないようにエラーハンドリングを設定。 |
MsgBox | 結果をユーザーにわかりやすく表示。 |
注意点と補足
- 検索対象の名前が「C列の先頭列(1列目)」である必要があります。
- 列番号
3
は、検索範囲C2:E11
における「3列目(=E列)」を意味します。 - 見つからなかった場合に備えて、必ず
On Error
による処理分岐を入れるのが推奨です。
まとめ
Excel VBAでVLOOKUP
関数を活用すれば、表からの値取得をシンプルかつ柔軟に実装することができます。
実務でよくある「名前に対応する値の取得」や「コードから情報を引き出す」処理に最適です。
また、エラー処理を加えておくことで、該当データが存在しない場合にも安全に動作する堅牢なマクロとなります。
繰り返し使いたくなる定番テクニックですので、ぜひご活用ください。