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 上工作。
您也可以使用 INDEX 和 MATCH ...
做类似的事情
Range("AW" & i) = WorksheetFunction.Index(Sheet3.Range("A1:B" & lastrow), WorksheetFunction.Match(Sheet2.Range("B" & i), Sheet3.Range("A1:B" & lastrow)))
如果您有可能找不到匹配项,则需要执行适当的错误检查。
当我在最后一个参数上使用 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 上工作。
您也可以使用 INDEX 和 MATCH ...
做类似的事情Range("AW" & i) = WorksheetFunction.Index(Sheet3.Range("A1:B" & lastrow), WorksheetFunction.Match(Sheet2.Range("B" & i), Sheet3.Range("A1:B" & lastrow)))
如果您有可能找不到匹配项,则需要执行适当的错误检查。