如何让VLOOKUPselect到VBA中的最低行?

寻找在单元格中自动插入VLOOKUP公式。 录制macros时,我指示它使用相同的公式填充下面的列。 很好的工作,但是,当VLOOKUP通过更改(更多或更less的行)进行更改时,会出现问题。

在logging时,VLOOKUP下降到表中的最后一行(273)。 不过,我想把它设置好,这样它就会下到最后一行。 这意味着我可以在不同行数的表上运行脚本。

选定的列将保持不变。

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

尝试这个:

 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块内

@nbayly说,这个post很多。 事实上,我已经在这里提供了一个答案:

如何用variablesreplaceRC公式值

下面稍微修改一个dynamic范围,这是我相信你正在寻找

 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