[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA VLOOKUP関数で最終行を取得したい』(おみ)
同ブックにデータを入力するsheetと、マスタsheetがあります。
今はデータsheetのA2から最終行まで=VLOOKUP(C2,マスタ!A2:B3254,2,0)をコピーしているのですが、データsheetのC2の最終行と、マスタsheetの検索範囲の最終行を都度取得してVLOOKUPするマクロを作りたいと思っています。
データsheetのA2から最終行に入った値は、後ほど操作をするので関数が入るのは避けたいです。
下記のような指令があるのですが、ここに2つの最終行を取得して、ループ捜査を加えたいのですがご教授いただけませんでしょうか?
Sub 別のシートからVLookup()
Dim tbl As Range Dim key Dim ret As String
Set tbl = Sheets("マスター").Range("A2:B3254")
key = Range("C2").Value
On Error Resume Next
ret = WorksheetFunction.VLookup(key, tbl, 2, False) On Error GoTo 0
Range("A2").Value = ret
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows8 >
Sub 別のシートからVLookup() Dim tbl As Range Dim key As Variant Dim ret As String Dim i As Long With Worksheets("マスター") Set tbl = .Range("B2", .Cells(.Rows.Count, "A").End(xlUp)) End With For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row key = Range("C" & i).Value On Error Resume Next ret = WorksheetFunction.VLookup(key, tbl, 2, False) On Error GoTo 0 Range("A" & i).Value = ret ret = Empty 'エラー行で前の行の値を返すのを防ぐ Next i End Sub
(アクロスラッシャー) 2020/07/09(木) 16:22
計算後に、値に変換することでもよいです。
Sub test() Dim wsData As Worksheet
Set wsData = Worksheets("データ")
With wsData.Range("c2", wsData.Range("c2").End(xlDown)).Offset(, -2) .Formula = "=iferror(vlookup(c2,マスタ!a:b,2,false),"""")" .Value = .Value End With
End Sub
(マナ) 2020/07/09(木) 20:57
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.