Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA索引内部的匹配函数_Excel_Vba_Indexing_Match - Fatal编程技术网

Excel VBA索引内部的匹配函数

Excel VBA索引内部的匹配函数,excel,vba,indexing,match,Excel,Vba,Indexing,Match,我有一段代码,当我把它输入到细胞内时,它就可以工作了 =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"

我有一段代码,当我把它输入到细胞内时,它就可以工作了

=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)
那么,有人能告诉我我的错误在哪里,或者我做得对吗


提前感谢

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

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)")


在这段代码中,有些值1/2是字符串,这是解决方案。谢谢另一个问题是,我必须为范围(例如范围$B:$B)输入使用变量,还是我可以编写Sheet.range(Sheet.Cells(x,y).Address,Sheet.Cells(z,y).Address)?另外,我如何引用变量(字符串数组(但使用for循环)来部分“Some_value”ad 1)要计算的表达式是字符串;因此,您必须替换相关部分,而不是包括范围对象,而是将范围地址
“$B:$B”
作为文本连接,例如通过
Evaluate(“&Sheet1.columns(2.address&=”Some_value1“)*…
ad 2)我不太明白你的确切意思。-也许你应该提出另一个问题,因为它似乎与原始问题不同:-)与你在广告1中回答的相同,但我正在搜索的值。如何用变量替换“Some_value”:搜索词?我尝试了“&搜索词(I)&”,但不起作用