VBA2023-09-06ExcelのVLOOKUP関数はVBAでも使用できます。VBAでVLOOKUP関数を使用するにはApplication.WorksheetFunctionを使います。セルに直接数式を埋め込む方法もあります。どちらの方法も引数は従来のVLOOKUP関数と同じままです。ここではVBAで使うVLOOKUP関数の使用例と細かいテクニックについて解説していきます。VBAを使用するために「開発タブ」を表示させておく必要があります。デフォルトでは表示されていないため、まだ表示されていない方は開発タブの表示方法を参照してください。関連リンク【エクセル】VLOOKUP関数の使い方・テクニック完全ガイド目次VLOOKUP関数の構文VBAでもVLOOKUP関数の設定項目は同じです。確認用のVLOOKUP関数の構文は下記=VLOOKUP(検索値,範囲,列番号,[検索方法])検索値:範囲の最初の列で検索する値をここで指定します。範囲:目的のデータが含まれるテーブルをセル範囲で指定します。列番号:取得したい値が範囲内で何列目にあるかの列番号を指定します。範囲の先頭列は1となります。FALSE、近似値を含めて検索する場合はTRUEを指定します。省略するとTRUEが設定されます。0か1で設定することもできます。使用例1:WorksheetFunctionを使ったシンプルなVLOOKUPの使用まずはWorksheetFunctionを使って、VLOOKUPを行い、返される値をメッセージボックスで表示する例です。Subコード解説まず検索値を代入する変数「id」を文字列型として定義しておきます。String最終的な返却値となる点数を入れる変数「marks」を長整数型として定義します。長整数型とは-2147483648~2147483647の整数を指します。Longidに値を代入します。ここで代入する値が検索値となります。"A004"次に第2引数用の目的のデータが含まれるテーブルのセル範囲を定義します。データはセルA1:C6に存在するため、範囲を次のように定義します。A1:C6")変数のWorksheet関数を使用してVLOOKUP関数を次のように記述します。VLOOKUP関数によって返される値がmarksに代入されます。False)最後にVLOOKUPで取得したmarksをメッセージボックスで表示させる記述をします。生徒の名前とテストの点数に関するデータがあるとします。セルD2に名前を指定すると、生徒の点数がセルE2に返されるように、VBAでVLOOKUPのコードを記述する方法について解説します。検索値としての「D2」の値を取得し定義します。Range("D2")列Aから列Bを範囲として定義します。Range("A:B")結果を出力するセルを定義します。Range("E2")最後にVLOOKUPで指定した名前で検索し、結果をE2セルに返すコードを記述します。False)使用例3:ダイヤログ入力情報からVLOOKUPを実施(エラー処理あり)生徒の名前とテストの点数に関するデータがあるとします。入力ボックス付きダイアログに指名を入力すると、その人の点数がメッセージボックスに表示されるVBAの作成方法について解説します。リストにない名前が入力された場合は「指定した名前は見つかりませんでした」と表示するようにします。列Aと列Bを範囲として定義します。Range("A:B")名前を入力ボックス付きダイアログで検索値を取得します。InputBox(“名前を入力してください")VLOOKUPで入力した名前の点数を取得します。False)メッセージボックスに結果を表示します。Message」を使って、名前がみつからなかった際にアラートがでるように記述します。ThenMsgBox(“指定した名前は見つかりませんでした”)使用例4:直接VLOOKUPの数式を埋め込んで使用VBAではExcelで使う数式をそのまま埋め込むことが可能です。この例では直接数式を埋め込んで、結果が出たあとに数式を値に変換しています。SubVBAのVLOOKUP関数のエラー回避方法VLOOKUP実行時に検索値が見つからずにエラーが出ている様子WorksheetFunctionによるVLOOKUP関数を使用する際、検索値がない場合などに「プロパティが取得できません」とエラーが出る場合があります。Next」ステートメントを使用します。このステートメントはマクロ実行時にエラーが発生しても中断せずに次のステートメントから処理を続けることができます。Next」でエラーを回避します。下記コードでは検索値をセルから取得してVLOOKUPで検索する際にエラーが出た場合、「該当なし」と表示させる例です。Sub詳細な解説は下記のリンクから参照してください。WorksheetFunctionによるVLOOKUP関数を使用する際、検索値がない場合などに「プロパティが取得できません」とエラーが出る場合があります。別シートのマスタデータから商品IDに対応する値をVBAのVLOOKUPで取得している様子VBAで別シートのセルを参照する場合は「Worksheets」を使います。「Worksheets(“Sheet1”).Range(“A1:B10”)」というようにWorksheetsでシート名を指定し、Rangeオブジェクトに「.(ドット)」でつなげて使います。検索値には「入力シート」の「A2」を指定し、範囲には「マスタデータ」シートの「A2:D51」を指定しています。Next」以降はエラー回避のための記述となっています。検索値が見つからない場合などは「該当なし」と結果を表示するようにしています。Sub詳細な解説は下記のリンクを参照してください。VBAで別シートのセルを参照する場合は「Worksheets」を使います。別シートのデータを参照し、検索値の列の最終行まで繰り返しVLOOKUPで値を取得している様子ExcelのVBAで必要な行数だけ繰り返しVLOOKUPで検索を行いたい場合は下記コードのように最終行を取得して、FOR文で繰り返し処理をします。Next詳細な解説は下記のリンクを参照してください。ExcelのVBAで必要な行数だけ繰り返しVLOOKUPで検索を行いたい場合は下記コードのように最終行を取得して、FOR文で繰り返し処理をします。ここではそのサンプルコードと...VBAのVLOOKUPを高速化する方法VBAでセルに直接VLOOKUP関数の数式を代入し、値に変換している様子ExcelのVBAで大量のデータをVLOOKUP関数で取得する際に高速で検索する方法で一番おすすめなのが下記のようにセルに直接VLOOKUP関数の数式を埋め込む方法です。コード例セルに直接VLOOKUP関数の数式を代入して計算するサンプルコードです。処理にかかった秒数としては2.9秒で完了しています。エラー処理などの必要がないのでかなり楽です。Subより詳しい解説と、さらに早く計算する方法については下記のリンクを参照してください。ExcelのVBAで大量のデータをVLOOKUP関数で取得する際に高速で検索する方法について解説します。当記事とは違う書き方でVLOOKUPの関数をVBAで記述しています。シート内のセルをクリックしたときに、プログラムが動くようになっており、より便利な記述の仕方を解説しているのでおすすめです。ショートカットキーの練習できます当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。下のスタートボタンを押して練習モードに入ります。(WEB関連)WEB関連の会社に13年務めていて、デザイン、フロントエンド、ディレクション、マネジメントを一通り経験。各ポジションで資料やツールを作りまくり、Excel、PowerPointなどのツールが大得意に。本業の経験で得た知識をあますことなく共有します。