Vlookup中的VBA偏移?
我正在尝试为Lookup_value左边的一行获取一个Vlookup。 我不能做一个“-1”(或-2)的Table_array,所以我想知道如果我可以做一个偏移量(0,-1)在该行的代码。
有问题的线路:
wCell.FormulaR1C1 = "=VLOOKUP(RC[1],'[" & filename & "]" & ws.Name & "'!R8C4:R" & lastrow & "C5,-1,FALSE)"
整个代码块:
Range("$C$8:$C$" & lastrow).Select For Each wCell In Range("$C$8:$C$" & lastrow) wCell.Select If wCell.FormulaR1C1 = "" Then wCell.FormulaR1C1 = "=VLOOKUP(RC[1],'[" & filename & "]" & ws.Name & "'!R8C4:R" & lastrow & "C5,-1,FALSE)" End If Next
如果您正在寻找在Excel中参考点左侧的信息,使用Match-Index
查找将是他们的方式。 这种方法不仅可以查看您的引用的左侧或右侧,但它也是一个更快的过程。
VLookup看起来像这样:
=VLookup([Value to find],[Where to find the value],[Column to return],[range lookup])
使用Match-Index的地方如下所示:
=Index([Range to look in for return],Match([Value to find],[Range to look in for value],[Exact match or partial]))
所以,虽然写得有些复杂,但使用第二种方法确实增加了您可以查看的信息的灵活性以及信息的位置。
现在,如果您要将此方法应用于您的代码,则应如下所示:
wCell.FormulaR1C1 = "=Index([Range of Value to Find],Match(RC[1],'[" & filename & "]" & ws.Name & "'!R8C4:R" & lastrow & "C5, [0 for exact match]))"
(只要将我添加在括号中的数据replace为他们需要的信息,并且应该解决您遇到的问题)