'「WorksheetFunction」でVLookup関数を使う
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row '最終行までループ
With Cells(i, "D")
.Offset(0, 1) = WorksheetFunction.VLookup(.Value, Range("A2:B15"), 2, False) 'VLookup関数を計算する
End With
Next
'「数式埋め込み」でVLookup関数を使う
a = Cells(Rows.Count, "D").End(xlUp).Row '最終行を取得
Range("E2:E" & a) = "=VLOOKUP(D2,$A$2:$B$15,2,FALSE)" 'VLookup関数を埋め込む
Range("E2:E" & a).Value = Range("E2:E" & a).Value '値に変換
Sub TEST1()
'VLookup関数を計算する
Cells(2, "E") = WorksheetFunction.VLookup(Cells(2, "D"), Range("A2:B15"), 2, False)
End Sub
という感じになります。
ちょっと長いので、「With」でくくっておきます。
「With」でくくる
Sub TEST2()
'「With」でくくる
With Cells(2, "D")
'VLookup関数を計算する
.Offset(0, 1) = WorksheetFunction.VLookup(.Value, Range("A2:B15"), 2, False)
End With
End Sub
条件をセルに入力しておきます。
条件をセルに入力
では、VBAコードを実行してみます。
VLookupで値を取得
VLookupで値を検索して、取得できました。
Forと変数を使って繰り返す
「Forと変数」を使って繰り返してみます。
Sub TEST3()
'ループする
For i = 2 To 4
With Cells(i, "D")
'VLookup関数を計算する
.Offset(0, 1) = WorksheetFunction.VLookup(.Value, Range("A2:B15"), 2, False)
End With
Next
End Sub
2~4行目をループして繰り返します。
ループして検索する
VBAコードを実行した結果をみてみます。
検索した結果
VLookup関数をループして、値を検索できました。
最終行まで繰り返す
最終行まで繰り返してみます。
Sub TEST4()
'最終行までループ
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
With Cells(i, "D")
'VLookup関数を計算する
.Offset(0, 1) = WorksheetFunction.VLookup(.Value, Range("A2:B15"), 2, False)
End With
Next
End Sub
最終行は「End」で取得することができます。
「End」で最終行を取得
という感じです。
取得した最終行を使って、ループします。
最終行までループ
これで、最終行まで検索して値を取得できます。
ループして検索した結果
最終行までループして値を取得できました。
数式を埋め込んでVLookup関数を使う
次は、「数式を埋め込んで」VLookup関数を使ってみます。
検索値に一致した値を取得する
「VLookup関数」を埋め込んで、検索値に一致した値を取得します。
Sub TEST5()
'VLookup関数を埋め込む
Range("E2") = "=VLOOKUP(D2,A2:B15,2,FALSE)"
Range("E2").Value = Range("E2").Value '値に変換
End Sub
セルに検索値を入力しておきます。
検索値を入力
では、VBAコードを実行してみます。
「数式埋め込み」を使って検索した結果
「数式埋め込み」を使って検索できました。
数式をコピーすると簡単
数式埋め込みを使う場合は「数式をコピーすると簡単」です。
数式をコピーすると簡単
この数式をVBE画面にコピーして使います。
数式を一括で埋め込む
複数で検索したい場合は、「数式を一括で埋め込み」ます。
Sub TEST6()
'VLookup関数を埋め込む
Range("E2:E4") = "=VLOOKUP(D2,$A$2:$B$15,2,FALSE)"
Range("E2:E4").Value = Range("E2:E4").Value '値に変換
End Sub
「Range("D2:D4")」を指定して数式を埋め込みます。
セル範囲を指定して埋め込み
VBAコードを実行してみます。
複数で検索できた
複数で検索できました。
ループする必要がないのでVBAコードがシンプルですね。
最終行まで検索する
最終行まで検索してみます。
「End」で最終行を取得して最終行までのセル範囲を作成します。
Sub TEST7()
'最終行を取得
a = Cells(Rows.Count, "D").End(xlUp).Row
'VLookup関数を埋め込む
Range("E2:E" & a) = "=VLOOKUP(D2,$A$2:$B$15,2,FALSE)"
Range("E2:E" & a).Value = Range("E2:E" & a).Value '値に変換
End Sub