如何在vba中实现Vlookup公式下拉
为什么在下面我的vba代码的vlookup函数中没有调用范围(Rg),是否需要进行任何更正以使其正常工作如何在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
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”,参考:=RgActiveCell.FormulaR1C1=“=vlookup(RC[-2],Rg,3,0)”
->ActiveCell.FormulaR1C1=“=vlookup(RC[-2],“&Rg.Address&”,3,0)”