如何在vba中实现Vlookup公式

时间:2017-07-03 05:27:16

标签: 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(ActiveCell.Address, "$")(1)

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

End Sub

1 个答案:

答案 0 :(得分:0)

不确定为什么在您的设置中没有为命名范围工作并使用它来设置FormulaR1C1。模拟和下面的代码是否有效。

在Sheet1中考虑这一点:
MyRange on Sheet1

这在Sheet2中:
SampleDataSheet2

运行子产量:
Result

代码

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" (只是为了匹配上面的代码)
  • 避免固定拉斯特罗
  • 如果您有很多要自动填充公式的FormulaR1C1,请使用模块级别Private Const