How to get VLOOKUP to select down to the lowest ro

2019-03-05 23:37发布

Looking to automate the insertion of a VLOOKUP formula in a cell. When recording the macro I instruct it to populate the columns below with the same formula. Works great, however, there is an issue when the table that the VLOOKUP searches through changes (more or less rows).

As it's recorded, the VLOOKUP drops down to the final row in the table (273). However, I want to set it up so that it will go down to the very last row. Meaning that I can run the script on tables of varying numbers of rows.

Selected columns will remain the same.

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

2条回答
戒情不戒烟
2楼-- · 2019-03-05 23:54

@nbayly said it, plenty of posts on this. Infact i have provided an answer to this before here:

How to Replace RC Formula Value with Variable

below is slightly modified for a dynamic range, which is what i believe you are looking for

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

remember to define j as long and n=sheets("sheetname)".cells(rows.count,1).end(xlup).row

replace 10 in j = n to 10 with the starting row number

查看更多
一夜七次
3楼-- · 2019-03-06 00:02

try this:

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

where:

  • Range("AJ2")

    will implicitly reference the ActiveSheet

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

    will reference "Previous" worksheet, being inside a With Worksheets("Previous")- End With block

查看更多
登录 后发表回答