Vba 尝试将Vlookup片段添加到我的Excel宏

Vba 尝试将Vlookup片段添加到我的Excel宏,vba,excel,vlookup,Vba,Excel,Vlookup,我试图在我正在处理的一个长宏中添加一个Vlookup片段,以消除一些日常数据操作工作 基本上每天我都有四列新的数据,我用vlookup与前一天进行比较。四个新列位于C-F列,旧数据位于M-P列。I vlookup D列与M列相对,公式位于G列 我遇到了一个问题,如何灵活地使用我每天给宏的范围,因为我不想不断地改变它。行数将在10000-30000之间波动 这是我的代码-我可能认为这一切都错了 Sub Lookup() Dim i, LastRow Set i = Sheets("data").

我试图在我正在处理的一个长宏中添加一个Vlookup片段,以消除一些日常数据操作工作

基本上每天我都有四列新的数据,我用vlookup与前一天进行比较。四个新列位于C-F列,旧数据位于M-P列。I vlookup D列与M列相对,公式位于G列

我遇到了一个问题,如何灵活地使用我每天给宏的范围,因为我不想不断地改变它。行数将在10000-30000之间波动

这是我的代码-我可能认为这一切都错了

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
子查找()
我是最后一排
设置i=图纸(“数据”)。范围(“F5”)。结束(xlUp)
如果单元格(i,“F5”)的值为“”,则
范围(i,“G”).Value=WorksheetFunction.VLookup(单元格(i,“D”)、范围(“N”)。结束(xlDown),1,False)
如果结束
端接头
试试看

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

您有一些向后范围的引用。我无法与vlookup通话,但您可以从这一部分开始:

If Cells(i, "F5").Value <> "" Then
Range(i, "G").Value = WorksheetFunction.VLookup(Cells(i, "D"), Range("N").End(xlDown), 1, False)
End If
如果单元格(i,“F5”)。值为“”,则
范围(i,“G”).Value=WorksheetFunction.VLookup(单元格(i,“D”)、范围(“N”)。结束(xlDown),1,False)
如果结束
尝试将其更改为此以修复范围声明:

If Range("F" & i).Value <> "" Then
    Range("G" & i).Value = WorksheetFunction.VLookup(Range("D" & i), Range("N").End(xlDown), 1, False)
End If
如果范围(“F”和i).Value为“”,则
范围(“G”和i).Value=WorksheetFunction.VLookup(范围(“D”和i),范围(“N”)。结束(xlDown),1,False)
如果结束

在单元格中使用动态命名范围和规则VLOOKUP公式。或者使用VBA大量填充
。公式1c1
。您试图实现什么样的灵活性?在我看来,您的工作过于复杂了:(1)在任何单元格中键入您想要的VLookup公式。(2) 进入VBE direct窗口并键入
?选择。公式1c1
。(3) 最后,输入代码
表格(“数据”).Range(“F1:F30000”).FormulaR1C1=“在这里输入从步骤2得到的公式”
。还是说我完全疯了?