如何在vba中实现Vlookup公式下拉

如何在vba中实现Vlookup公式下拉,vba,excel,Vba,Excel,为什么在下面我的vba代码的vlookup函数中没有调用范围(Rg),是否需要进行任何更正以使其正常工作 Sub Vlkuprangcall() Dim strColum As String Dim Rg As Range Set Rg = ActiveWorkbook.Sheets(1).Range("F4:H9") With ActiveSheet a = ActiveCell.Column lastrow = 9 strColumn = Split(Ac

为什么在下面我的vba代码的vlookup函数中没有调用范围(Rg),是否需要进行任何更正以使其正常工作

Sub Vlkuprangcall()
  Dim strColum As String
  Dim Rg As Range
  Set Rg = ActiveWorkbook.Sheets(1).Range("F4:H9")

  With ActiveSheet
   a = ActiveCell.Column
   lastrow = 9
   strColumn = Split(ActiveCell.Address, "$")(1)

   ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],Rg,3,0)"
   ActiveCell.AutoFill Destination:=Range(ActiveCell, Range(strColumn & lastrow))

End Sub

不确定设置中为什么没有命名该范围并使用它来设置公式1C1。做了一个模型和下面的代码工作

在表1中考虑这一点:

这在第2页:

运行子系统将产生:

代码:

Sub VlkupRangCall()
    Dim strColumn As String, lastrow As Long

    With ActiveSheet
        lastrow = 9
        strColumn = Split(ActiveCell.Address, "$")(1)

        .Range(ActiveCell, Range(strColumn & lastrow)).FormulaR1C1 = "=vlookup(RC[-2],MyRange,3,FALSE)"
    End With
End Sub
您可以改进的内容:

  • 使用表格而不是固定范围
  • 将此表重命名为更有意义的名称,例如“MyRange”(只是为了匹配上面的代码)
  • 避免固定最后一行
  • 如果有很多公式可以自动填充公式,请对这些公式1c1使用模块级
    Private Const

Rg
作为文本而不是变量插入公式中。此处更适合使用命名范围。假设您将
ActiveWorkbook.Sheets(1).Range(“F4:H9”)
命名为LookUpTable,然后更改为
.FormulaR1C1=“=vlookup(RC[-2],LookUpTable,3,0)”
。还有,为什么vlookup的最后一个参数不是真/假?@PatricK最后是
FALSE
)@PatricK是代码是正确的,我已经设置了set-set Rg=ActiveWorkbook.Sheets(1)Range(“F4:H9”)ActiveWorkbook.Names.Add Name:=“MyRange”,参考:=Rg
ActiveCell.FormulaR1C1=“=vlookup(RC[-2],Rg,3,0)”
->
ActiveCell.FormulaR1C1=“=vlookup(RC[-2],“&Rg.Address&”,3,0)”