Vlookup中的VBA偏移量?

时间:2015-06-17 18:20:11

标签: excel vba excel-vba

我试图为Lookup_value左边的行获取Vlookup。我不能做一个" -1"的Table_array。 (或-2)所以我想知道我是否可以在该行代码中做偏移量(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

1 个答案:

答案 0 :(得分:1)

如果您希望在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]))"

(只需将我在括号中添加的位更改为他们需要的信息,这应该解决您遇到的问题)