首页 > 解决方案 > 匹配函数内的Excel VBA索引

问题描述

当我在单元格内输入它时,我有这段代码可以工作

=MATCH(1;INDEX(($B:$B="Some_value1")*($D:$D="Some_value2");0);0)

当我将其“翻译”为 VBA 代码时,出现类型不匹配错误。

Debug.Print Application.WorksheetFunction.Match(1, Application.WorksheetFunction.Index((Range("B:B") = "Some_value1") * (Range("D:D") = "Some_value2"), 0), 0)

那么谁能指出我的错误在哪里,或者我做得对吗?

提前致谢

标签: excelvbaindexingmatch

解决方案


请记住,内部矩阵反映了基于工作表逻辑的条件(返回 0 或 1 个单元格值的数组),您似乎必须至少在INDEX部分内执行评估:

Debug.Print WorksheetFunction.Match(1, WorksheetFunction.Index(Evaluate("($B:$B=""Some_value1"")*($D:$D=""Some_value2"")"), 0), 0)

或评估整个表达式:

Debug.Print Evaluate("=MATCH(1,INDEX(($B:$B=""Some_value1"")*($D:$D=""Some_value2""),0),0)")


推荐阅读