【发布时间】:2015-03-18 21:03:50
【问题描述】:
我在我的 vba 代码中使用了一个 Index(Match()) 函数,该函数似乎遇到了一些问题。因为某些搜索条件并不完全相同,所以我尝试在单元格C2 周围使用"*" 通配符运算符来搜索类似项目。此外,我不想简单地将我正在使用的公式放入带有Range("D2").Formula 代码的单元格中,这将导致自动更新,因此,我也遇到了这方面的问题。
这是我的代码。
Range("D2") = Index('Future_220_140_MON'!$B$20:$AK$24, Match(" * "&C2&" * "&T2, 'Future_220_140_MON'!$B$1:$AK$1&'Future_220_140_MON'!$A$20:$A$24, 0))
我只是错误地格式化了代码,还是在匹配多个条件时有一种特殊的方式来调用通配符。
【问题讨论】:
-
您遇到什么错误?调试错误?结果无效?
-
你有什么理由用空格来抵消你的通配符?如果你这样做应该可以
Match("*"&C2&"*"&T2, ... -
您还将 VBA 函数与工作表函数混合在一起,这可能会解释您可能遇到的任何错误。
-
我怀疑你需要使用 两个 MATCH 函数,如下所示: =
=Index('Future_220_140_MON'!$B$20:$AK$24, Match("*"&C2&"*",'Future_220_140_MON'!$A$20:$A$24, 0),MATCH("*"&T2&"*",'Future_220_140_MON'!$B$1:$AK$1,0))- 一个 MATCH 给出行,下一个 MATCH 给出列,然后 INDEX 返回路口的价值 -
是的,在某些情况下您可能会使用串联(例如,两个不同列中的 2 个条件)但是当您必须匹配一行和一列时,您需要两个 MATCH 函数,按照显示的顺序
标签: vba excel excel-formula wildcard