【エクセルVBA】VLOOKUPをVBAで実現させる簡単な方法

投稿者: | 2021年6月13日
excelアイコン

エクセルバージョン

マイクロソフト365

 

本日はエクセルのVLOOKUP関数の取得と一緒の処理をVBAで実現させていきたいと思います。

そんなに難しくはないので是非ためしてみてください(*゚▽゚)ノ

それではいってみましょう!

 

今回使用するサンプル

VLOOKUP関数が赤枠E2セルとF2セルに入力されており、E5セルは検査値を入力するセルです。

今回はこのような形式と同じになるようにVBAで実行できるようにします。

vlookサンプル寿司

 

作成手順

手順

・ChangeイベントでE5セルの値が変わったら処理をする(シートモジュール)

・データの最終行を取得(標準モジュール)

・for文とif文で繰り返し処理をしながら条件指定でセルを1つずつ検索(標準モジュール)

大まかにこんな感じでVBAでE5セルの値が変更されると、E2セルとF2セルに寿司と値段が取得表示できます。

 

VLOOKUP関数のような検索をVBAで実行

下記のE5セル(検査値)の値が変更されたらVBAを実行させます。

chageイベントサンプル

 

Changeイベント作成(シートモジュール)

まずはE5セル(検査値)の値が変わった時のみ、VBAを実行させるという事をします。

 

シートモジュールを開き下記を選択します。

シートモジュールの開き方が分からない方は → シートモジュール

 

Worksheetを選択します。

worksheet

 

Changeを選択します。

changeイベント選択

 

下記のコードをシートモジュールにコピペします。

解説

E5セル以外の値が変更された場合は処理を終了(Exit Sub)させます。

E5セルの値が変更されたら処理を実行します。(サンプル1をCallして実行)

 

これでシートのE5セルの値が変更された場合のみ、VBAで処理を実行させることが可能になります(*^^)v

 

標準モジュールに処理内容を記述

次に標準モジュールに処理の内容を記述していきたいと思います。

標準モジュールの開き方が分からない方は → 標準モジュール

 

下記のコードを標準モジュールにコピペします。

解説

変数を宣言します。

データの最終行番号を取得します(For文のカウンタの終了値に使用するため)

繰り返し処理For文を使用してデータの行数分1つずつ検索をしていきます。
(検索内容は➃)

IF文でA列の変数numRowの行の値と、E5セルの値が同じだったら処理を実行できるようにします。

IF条件が合致(true)したら、E2セルとF2セルに変数numRowの行の寿司と値段を表示させます。

IF条件が合致の場合は、繰り返し処理を抜けます(Exit For)。この処理を実施しないと次の繰り返し処理が行われてしまい、E2,F2セルの値が消去されてしまいます。

A列の変数numRowの行の値と、E5セルの値が違う場合の処理をさせます。

IF条件が合致せずその他(false)の場合は、E2セルとF2セルを空白処理を実施し値を消去します。

一番上の定数Constで寿司(SUSHI)と値段(PRICE)の列番号を変更できます。

 

結果

E5(検査値)セルの値を変更すると、自動でE2(寿司)F2(値段)セルの値が自動で瞬時に取得できます\(^^)/

VBA_VLOOKUP

 

まとめ

VBAでもVLOOKUP関数のような処理は簡単に実現できるのでこの機会に試してみてくださいネ(★‿★)

以上です。