VBA Vlookup 精确匹配 (false) 的代码应该有效吗?

VBA code for Vlookup exact match (false) should work?

当我在最后一个参数上使用 True 时,我的代码有效。问题是它必须完全匹配,否则代码会给我带来不正确的值。但是,当我将最后一个参数更改为 False 时,出现错误 1004

Unable to get vlookup property of the WorksheetFunction class

这是我的代码:

Range("AW" & i) = WorksheetFunction.VLookup(Sheet2.Range("B" & i), Sheet3.Range(Sheet3.Range("A1"), Sheet3.Range("B" & lastrow)), 2, False)

我只是想让这个 vlookup 给我正确的值。因此,我需要使精确匹配参数起作用。

你需要做这样的事情...

Range("AW" & i) = WorksheetFunction.VLookup(Sheet2.Range("B" & i), Sheet3.Range("A1:B" & lastrow), 2, False)

...您需要将单个范围包装在第二个参数中。它没有经过 100% 的测试,但我在本地模拟了一些东西,在一个有效的 sheet 上工作。

您也可以使用 INDEXMATCH ...

做类似的事情
Range("AW" & i) = WorksheetFunction.Index(Sheet3.Range("A1:B" & lastrow), WorksheetFunction.Match(Sheet2.Range("B" & i), Sheet3.Range("A1:B" & lastrow)))

如果您有可能找不到匹配项,则需要执行适当的错误检查。