【问题标题】:VLookup function range in Excel using macroExcel中使用宏的VLookup函数范围
【发布时间】:2017-10-02 08:57:34
【问题描述】:

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

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

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

如果数据范围发生变化,它将不起作用。 我想知道如何使 vlookup 函数的范围从开始到范围中的最后一行。 请帮忙!

【问题讨论】:

    标签: excel range vlookup vba


    【解决方案1】:

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

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

    【讨论】:

    • 你的意思是它会选择H列和I列中的所有行吗?
    • 是的,但我不确定它是否适用于旧版本的 Excel...
    【解决方案2】:

    您可以使用此代码。

    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)"
    

    【讨论】:

      【解决方案3】:

      试试

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-09
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多