我有一个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
答案 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。