VBA Countifメソッド ~メソッドの解説と使用例~

VBAのVLOOKUP関数とは?関数の解説と使用例

ENGINEER.CLUB編集部

ENGINEER.CLUB編集部

はじめに
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)
茨城県2796098
栃木県1876408
群馬県1886362
埼玉県7623798
千葉県6285156
東京都14272200
神奈川県9222417
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の処理で行うかは、行う内容やデータ数によります。
 うまく使い分けて活用してください。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め定年まで働けるエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって、エンジニアとしてだけでなくビジネスパーソンとして高い水準を目指し、社会や顧客に必要とされることで、関わる人々に感動を与える集団であろうと思っています。

  • 定年までIT業界で働くためのスキルが身につく「感動大学」と「技術勉強会」!
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な「人事評価制度」!
  • 理想のエンジニア像に近づくためのよきアドバイザー「専任コーチ制度」!
  • 稼動確認の徹底により実現できる平均残業時間17時間の働きやすい環境!

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

IT業界を目指す求職者へ

プレミアムSES®で市場価値の高いエンジニアへ

株式会社ボールドが約束する5つのプレミアムとは?

IT業界を目指す求職者へ

プレミアムSES®で市場価値の高いエンジニアへ

株式会社ボールドが約束する5つのプレミアムとは?