【发布时间】:2019-09-09 22:11:42
【问题描述】:
尝试在 VBA 中使用具有 2 个匹配条件的 application.match 函数来返回两个条件都存在的行号。我可以直接在我的工作表中输入并获得正确答案,但在转换为 VBA 代码时,我会收到 type mismatch error (13)。
这是我直接在工作表中输入并返回正确的行号:{=Match(1,("Criteria 1" = A:A)*("Criteria 2" = B:B),0)}。标准 1 和标准 2 是文本字符串。 A 列和 B 列中的数据是文本和数字的混合体。
这是我在 VBA 中尝试的导致类型不匹配错误的等效代码:
Result = application.match(1,(Criteria 1 = Range("A:A"))*(Criteria 2 = Range("B:B")), 0)
尝试了更短的测试线,也得到了类型不匹配的错误:
Test = Application.match(1,(Criteria 1 = Range("A:A"),0)
我希望此代码返回同时存在 Criteria 1 和 Criteria 2 的行号(结果)。 Locals 窗口显示 Criteria 1 是 Variant/String。我尝试了代码的精简版本,并得到了类似的错误。本例的结果是 Test,Locals 窗口显示 Test type 是 Variant/Double,Criteria1 是 Variant/String 并且 Range("A:A") 是 Variant/Variant(我将 Range(A:A) 分配给变量来确定这一点)
【问题讨论】:
-
请将代码部分格式化为代码块。