Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » 変数を使わずに別シートからVlookup

変数を使わずに別シートからVlookup

動作検証バージョン:Windows版Excel(バージョン1901 ビルド11231.20174)

「vba worksheetfunction vLOOKUP 他シート 変数なし」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

WorksheetFunctionオブジェクトのVlookupメソッドを使って、別シートからデータを取得するシンプルなサンプルをご紹介しています。

これを、変数を使わずに書きたいということでしょう。

[スポンサードリンク]

変数と使わずに別シートからVLookupするサンプルマクロ

以下のコードが参考になるのではないかと思います。
Sub 変数なしで別シートからVLookup()
 On Error Resume Next
 Range("B1").Value = WorksheetFunction.VLookup( _
   Range("A1").Value, _
   Sheets("マスター").Range("A1:B7"), _
   2, _
   False)
 On Error GoTo 0
End Sub

改行を入れなければ、
  On Error Resume Next
  Range("B1").Value = WorksheetFunction.VLookup(Range("A1").Value, Sheets("マスター").Range("A1:B7"), 2, False)
  On Error GoTo 0
です。

既にご紹介している以下のSubプロシージャを、変数を一切使わずに書いたのが上記のコードです。

Sub 別のシートからVLookup()
 Dim tbl As Range
 Set tbl = Sheets("マスター").Range("A1:B7")

 Dim key As Long
 key = Range("A1").Value

 On Error Resume Next
 Dim ret As String
 ret = WorksheetFunction.VLookup(key, tbl, 2, False)
 On Error GoTo 0

 Range("B1").Value = ret

End Sub

Excel上でVLOOKUP関数を入力する場合と比べましょう

VBAからWorksheetFunction.Vlookupメソッドを使うのではなく、Excel上でA1セルに入力されたデータを、「マスター」シートのA1:B7セルから完全一致で探して、2列目のデータを取得したい場合、下図のように引数を指定します。

これをVBAのWorksheetFunction.Vlookupメソッドとして利用するので、引数の指定方法を変更したのが、
   Range("A1").Value, _
   Sheets("マスター").Range("A1:B7"), _
   2, _
   False)
です。

VLOOKUP関数の、第1引数・検索値で「A1」とだけ指定していたのが「Range("A1").Value」に、第2引数・範囲で「マスター!A1:B7」と指定していたのが「Sheets("マスター").Range("A1:B7")」になっている点に注目しましょう。

最終更新日時:2019-03-07 11:19

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » 変数を使わずに別シートからVlookup

「WorksheetFunction」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.