我正在尝试将Vlookup片段添加到我正在努力消除一些日常数据处理工作的长宏中。
基本上每天我都有四个新的数据列,与前一天相比,使用vlookup。四个新列位于列C-F中,旧数据位于列M-P中。我在列M中查看了列D,其中的公式在G列中。
我遇到了一个如何灵活使用我每天使用宏的范围的问题,因为我不想经常更改它。行数将在10,000-30,000之间波动。
这是我的代码 - 我可能会想到这一切都错了。
Sub Lookup()
Dim i, LastRow
Set i = Sheets("data").Range("F5").End(xlUp)
If Cells(i, "F5").Value <> "" Then
Range(i, "G").Value = WorksheetFunction.VLookup(Cells(i, "D"), Range("N").End(xlDown), 1, False)
End If
End Sub
答案 0 :(得分:0)
放手一搏
Sub Sheet2_Button1_Click()
Dim Rws As Long, rng As Range, Mrng As Range, x
Rws = Cells(Rows.Count, "D").End(xlUp).Row
Set rng = Range(Cells(1, "G"), Cells(Rws, "G"))
Set Mrng = Range("M1:M" & Rws)
rng = "=IFERROR(VLOOKUP(D1, " & Mrng.Address & ",1,0),""Nope"")"
'----------If you want it to be just values uncomment the below line--------------
' rng.Value=rng.Value
End Sub
答案 1 :(得分:0)
您有一些向后范围参考。我不能说vlookup调用,但你可以从这个部分开始:
If Cells(i, "F5").Value <> "" Then
Range(i, "G").Value = WorksheetFunction.VLookup(Cells(i, "D"), Range("N").End(xlDown), 1, False)
End If
尝试将其更改为此以修复范围声明:
If Range("F" & i).Value <> "" Then
Range("G" & i).Value = WorksheetFunction.VLookup(Range("D" & i), Range("N").End(xlDown), 1, False)
End If