別シートの値を検索取得するマクロ-VLookup関数
を示す。
■Excel-VBA 別シートの値を検索取得するマクロ-VLookup関数
Sub sample21() Dim i As Long Dim MR As Long Dim X As String Dim ws1 As Worksheet Set ws1 = Worksheets("Sheet2") ws1.Cells(1, 1).CurrentRegion.Name = "list1" Dim SA As Range Set SA = ws1.Range("list1") MR = Cells(Rows.Count, 2).End(xlUp).Row AA = Range(Cells(1, 19), Cells(MR, 19)) XX = Range(Cells(1, 8), Cells(MR, 8)) For i = 2 To MR X = XX(i, 1) AA(i, 1) = Application.VLookup(X, SA, 4, False) Next i Range(Cells(1, 19), Cells(MR, 19)) = AA Range(Cells(1, 19), Cells(MR, 19)).Replace What:="#N/A", replacement:="0" End Sub※[2.~6.] 変数宣言とセット。
※[8.] Sheet2の検索対象セル範囲に名前をつける。
※[9.~10.] 変数宣言とセット。
※[12.] 最終行数取得。
※[14.~15.] 19列目(S列)と8列目(H列)を配列に格納。
※[16.~19.] X=8列目(H列)の値を範囲「SA」で検索
⇒ある場合「SA」4列目の値を配列AAに格納。
ない場合「#N/A」となる。
最終行までFor Nextループ。
※[20.] 配列AAの値を19列目(S列)のセルに格納。
※[22.] 19列目(S列)の「#N/A」を「0」に置換。
以上。