「vba worksheetfunction vLOOKUP 他シート 変数なし」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
WorksheetFunctionオブジェクトのVlookupメソッドを使って、別シートからデータを取得するシンプルなサンプルをご紹介しています。
これを、変数を使わずに書きたいということでしょう。
変数と使わずに別シートから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").ValueOn Error Resume Next
Dim ret As String
ret = WorksheetFunction.VLookup(key, tbl, 2, False)
On Error GoTo 0Range("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
- Newer:VBAでスライドタイトルの左上位置を取得する
- Older:再受講で理解度が各段に深まった
Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » 変数を使わずに別シートからVlookup