ワークシート関数VLookupをエクセルVBAで使う。利用法と注意点

ワークシート関数VLookupをエクセルVBAで使います。非常にベーシックな検索用途の関数です。

それゆえの利用法と注意点、特に検索対象列の限定制限は覚えておかなければなりません。

今回も、エクセルVBAで利用できるワークシート関数についてがテーマです。

この記事では、データナンバーなどから、その必要な値や数値を抽出する「Vloolup関数」について使い方を説明します。

こんにちは、じゅんぱ店長(@junpa33)です。

「VLookup関数」は他にもその動作がよく似た関数があります。それぞれに固有の特徴がありますが、特に、

関数が返してくる値に注目してください。

「関数リファレンス」を調べる

ワークシート関数VLookupをエクセルVBAで使う。
利用法と注意点。

VLookup関数は、対象範囲の第1列目を検索範囲として、その合致する値のある行の何れか(指定の)列番号目にあるデータを抽出表示するという特徴の関数になります。

その1列目に検索値が無い場合は、エラーを返します。(VBAのコード進行が止まります。)

VLookup関数の構文は

構文(記述方法)は

WorksheetFunction.VLookup(検索値, 範囲, 列番号, 検索方法)

です。

検索値

指定範囲の第1列にある値で検索します。

検索値には、数値、文字列、理論値や値に対するセル参照を指定します。

もちろん定数だけでなく変数も指定できます。

範囲

これは検索範囲ではなく、抽出したいデータも含めた、「データエリア全体」の範囲になります。

一塊のデータ表であれば、「Current.Regionプロパティ」を使いましょう。

vbacurrentregioneyecatch CurrentRegionは連続データをまとめて掴む

列番号

抽出したいデータのある列番号を指定します。

検索方法

「True」と「False」のどちらかを指定します。

「検索値と同値」を検索というのが殆どかと思いますので、その場合は「False」を指定することになります。

「True」は近似値の検索になります。

例題の紹介

今回も先回と同じ雑誌リストを使います。

同じサンプルですので、関数による使い方の差もわかるかと思います。

vbavlookupsetumei001

例題テストのコード

今回も、検索条件を入力して結果を見てみます。

例題テスト

今回もエラー回避コードを記述しています。

コード
Sub VLookup関数Test1()

Dim sKa As Variant, sKb As Long
Dim MVal As Variant
Dim DataRange As Range

Worksheets("Sheet1").Select

'変数を初期化
sKa = 0
sKb = 0
MVal = ""

'検索範囲をセットする
Set DataRange = Range("B6").CurrentRegion

'検索値の入力
sKa = Range("L1").Value

'戻り値の列の入力
sKb = Range("L2").Value

'エラーストップを無視するコード
On Error Resume Next

'コード項目列で検索する
MVal = Application.WorksheetFunction.VLookup(sKa, DataRange, sKb, False)
Range("L3") = MVal

'エラー無視を解除する
On Error GoTo 0

End Sub

実行結果

検索値指定を「58」に、戻り値の列を「6」列目に指定しました。

結果戻り値として、「メンズノンノ」というデータが返されました。

vbavlookupsetumei002

VLookup関数の注意点

VLookup関数の注意点としては、データ選択範囲をどこで設定するかで、

検索対象列が変わってしまうということです。

あくまでも、「検索対象列はデータ選択範囲の一番左端の列」というルールは固定されていますので、

下手にデータ選択範囲を指定してしまうと、思わぬ検索値を指定しなければならなくなります。

MEMO
それぞれのデータが持つ固有値を検索値にできる位置で検索対象列をセットするようにしましょう。

ワークシート関数VLookupをエクセルVBAで使うまとめ

このVLookup関数は、エクセルを日頃から使っている人には特にポピュラーな関数だと思います。

非常にベーシックである分、使いやすくなっていますが、その分柔軟性に欠けるところもあります。

特に、「検索対象列を変化させれない!」というのは、VBAコード組み立てでは、結構面倒くさいことになる場合もあります。

ですので、

個人的には、検索対象行も変化させれて、戻り値も「行番号」で返してくれる、「Match関数」のイチオシになってしまっています。

短期間でエクセルVBAの独学習得を目指したいなら

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

このサイトでよく使うVBAのコードのトピックを纏めています。

エクセルVBA最速理解で必要な知識を集めよう!

今回の記事はここまでです。   最後までご覧いただき有難うございました。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。