尝试将Vlookup片添加到Excel宏

时间:2015-09-30 22:39:01

标签: excel vba excel-vba vlookup

我正在尝试将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

2 个答案:

答案 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