当我在单元格内输入这段代码时,它会起作用
=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)
那么谁能指出我的错误在哪里,或者我做得对吗?
提前致谢
最佳答案
请记住,内部矩阵反射(reflect)了基于工作表逻辑的条件(返回 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)")
关于Excel VBA 匹配函数内的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65458446/