如何让VLOOKUP选择到VBA中的最低行?

时间:2016-11-09 17:09:24

标签: excel vba excel-vba automation vlookup

希望在单元格中自动插入VLOOKUP公式。 录制宏时,我指示它使用相同的公式填充下面的列。工作得很好,但是,当VLOOKUP搜索的表发生更改(更多或更少的行)时会出现问题。

随着记录,VLOOKUP下降到表格中的最后一行(273)。但是,我想设置它以便它将下到最后一行。这意味着我可以在不同行数的表上运行脚本。

所选列将保持不变。

Range("AJ2").Select
ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-20], Previous!R2C2:R273C22,17,FALSE)"

2 个答案:

答案 0 :(得分:1)

@nbayly说,关于此的帖子很多。事实上,我在此之前已经提供了答案:

How to Replace RC Formula Value with Variable

下面的

略微修改了动态范围,我相信你正在寻找

For j = n To 10 Step -1
    If Cells(j, 1).Value = "" Then
        Cells(j, 1).Formula = "=VLookup(RC20,Previous!R2C2:R273C22,17,FALSE)"
    End If
Next j

记得将j定义为long n=sheets("sheetname)".cells(rows.count,1).end(xlup).row

j = n to 10 with the starting row number

中替换10

答案 1 :(得分:1)

试试这个:

With Worksheets("Previous")
    Range("AJ2").FormulaR1C1 = _
        "=VLOOKUP(RC[-20], Previous!R2C2:R" & .Cells(.Rows.Count, 2).End(xlUp).Row & "C22,17,FALSE)"
End With

其中:

  • Range("AJ2")

    将隐式引用ActiveSheet

  • .Cells(.Rows.Count, 2).End(xlUp).Row

    将参考" Previous"工作表,位于With Worksheets("Previous")- End With块内