Excel VBA Vlookup与范围

时间:2018-11-14 02:10:52

标签: excel vba excel-vba vlookup

我有一个vlookup公式,该公式采用A2的值并返回在O2单元格的Lookup_Table中找到的相应匹配项,该查找继续针对下面的行。

我将如何修改此代码以在A:M中查找一系列值,并将结果放置在O:AA中?还是我必须分别手动编码每列?

  With Sheets("Example")
    .Range("O2:O" & .Range("A" & Rows.Count).End(xlUp).Row).Formula = _
        "=IF(ISERROR(VLOOKUP(A2,'Lookup_Table'!A:H,4,FALSE)),0,VLOOKUP(A2,'Lookup_Table'!A:H,4,FALSE))"
           .Range("O2:O" & .Range("A" & Rows.Count).End(xlUp).Row).Value = _
        .Range("O2:O" & .Range("A" & Rows.Count).End(xlUp).Row).Value 'Comment out if you'd like to leave the above formula in place
End With

screenshot

1 个答案:

答案 0 :(得分:1)

假设Lookup_Table = 'Lookup_Table'!A:H,您可以尝试执行以下操作:

With worksheets("Cross_Walk") ' Assumes Activeworkbook
    .Range("E2:H" & .Range("A" & .Rows.Count).End(xlUp).Row).Formula = _
        "=Iferror(VLOOKUP(A2,'Lookup_Table'!$A:$H,4,FALSE),0)"
    End With
  • 我们将公式分配到范围E2:H?,其中?是最后一行确定的范围。

  • 在将相同的公式分配给一系列单元格时,Excel会观察相对引用和绝对引用。

  • 因此,由于VLOOKUP中的A2具有相对的行和列引用(没有$符号),因此在B2中输入公式时,它将变为F2- -其余的行和列等。

  • 此外,如果您要测试VLOOKUP的结果是否为错误,然后有条件地分配零或匹配值,则最好在公式中使用IFERROR而不是进行两次VLOOKUP。