与通配符和多个条件的索引匹配

Posted

技术标签:

【中文标题】与通配符和多个条件的索引匹配【英文标题】:index match with wildcards and multiple criteria 【发布时间】:2016-12-14 07:52:32 【问题描述】:

我以前使用过INDEX(MATCH()) 这种形式的公式,但从未使用通配符。谁能解释一下为什么添加A2&"*" 会返回错误值?我检查了数据,肯定有匹配的。

公式如下:

=INDEX(I1:M1000,MATCH(1,(M1:M1000=Sheet3!B1)*(I1:I1000=A2&"*"),0),2)

【问题讨论】:

您的数据是如何布局的?我已经使用多个条件完成了索引/匹配,但格式为 is different。 【参考方案1】:

假设 A2 包含“abc”。

您可以在匹配语句的搜索字符串中放置通配符,例如

MATCH(A2&"*",I1:I1000,0)

搜索以 abc 开头的任何内容,但不在您正在搜索的范围内。

还有括号

(I1:I1000=A2&"*")

只是将 I1:I1000 范围内的每个单元格与 A2&"*" 进行比较,因此在这种情况下,它只是将每个单元格与 "abc*" 进行字面匹配,并且 * 不能用作通配符。

您可以尝试使用 FIND 或 SEARCH 进行部分匹配或使用 LEFT 获取 I1:I1000 中字符串的前几个字符

=INDEX(I1:M1000,MATCH(1,(M1:M1000=B1)*(FIND(A2,I1:I1000)=1),0),2)

=INDEX(I1:M1000,MATCH(1,(M1:M1000=B1)*(LEFT(I1:I1000,LEN(A2))=A2),0),2)

如果您使用 IF 语句重新转换公式,您仍然可以使用通配符:-

=INDEX(I1:M1000,MATCH(A2&"*",IF(M1:M1000=B1,I1:I1000),0),2)

【讨论】:

啊,非常感谢汤姆的帮助!我似乎在为最近何时可以使用和不能使用的许多交叉兼容性问题而苦苦挣扎:/ 再次感谢您提供有关此内容的提示:D:D:D:D 没问题。后来我确实想到,您可以使用 IF 语句重新转换它并仍然使用通配符。 并从第一个公式中省略了一个零 - 请参阅编辑。

以上是关于与通配符和多个条件的索引匹配的主要内容,如果未能解决你的问题,请参考以下文章

使用索引与通配符匹配来查找部分匹配

[Shell]正则表达式与通配符

正则表达式与Linux通配符

在条件表达式中常用的通配符都有哪些,"like"代表啥含义

Shell学习之结合正则表达式与通配符的使用

通配符与正则表达式