【问题标题】:VBA code for Vlookup exact match (false) should work?Vlookup 完全匹配 (false) 的 VBA 代码应该可以工作吗?
【发布时间】:2019-04-27 01:17:43
【问题描述】:

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

无法获取 WorksheetFunction 类的 vlookup 属性

这是我的代码:

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

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

【问题讨论】:

  • vlookup 不会产生任何类型的错误,我在工作表中进行了 vlookup,它们都有正确的数字。所以在这种情况下,一些错误处理程序是无用的!

标签: excel vba vlookup exact-match


【解决方案1】:

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

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

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

您也可以使用 INDEXMATCH ...

Range("AW" & i) = WorksheetFunction.Index(Sheet3.Range("A1:B" & lastrow), WorksheetFunction.Match(Sheet2.Range("B" & i), Sheet3.Range("A1:B" & lastrow)))

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多