使用宏在Excel中的VLookup功能范围

时间:2017-10-02 08:57:35

标签: excel-vba range vlookup vba excel

我正在尝试使用宏来在excel中执行vlookup。我已经成功创建并且代码工作正常! 代码如下:

ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC[-1],LW0640!R2C8:R12163C9,2,TRUE)" Selection.AutoFill Destination:=Range("D6:D6098")

但是,我发现范围是固定范围。结果来自D6:D6098,来源来自R2C8:R12163C9。

如果数据范围发生变化,它将无效。 我想知道如何从范围的开头到最后一行创建vlookup函数的范围。 请帮忙!

3 个答案:

答案 0 :(得分:0)

您可以使用" A1"符号的类型。在您的情况下,您需要第8列和第9列,分别是H和I,因此您可以编写以下内容:

ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],LW0640!H:I" & MyCols & ",2,TRUE)"
Selection.AutoFill Destination:=Range("D6:D6098")

答案 1 :(得分:0)

您可以使用此代码。

Sheets("LW0640").Select
Range("D6:D6098").Select
    ActiveWorkbook.Names.Add Name:="tablex", RefersToR1C1:= _
        "=LW0640!R6C4:R6098C4"


'Range("F28").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],tablex,2,TRUE)"

答案 2 :(得分:-1)

尝试

Sub Demo()
    Dim ws As Worksheet
    Dim LastRow As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")  'change Sheet1 to your data sheet
    With ws
        LastRow = .Range("H" & .Rows.Count).End(xlUp).Row
        .Range("D6:D" & LastRow).Formula = "=VLOOKUP(C6,LW0640!$H$2:$I$" & LastRow & ",2,TRUE)"
    End With
End Sub

您应该避免使用SELECTACTIVE。有关详细信息,请参阅this