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

公式如下:

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

最佳答案

假设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)

关于excel - 索引与通配符和多个条件匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38830891/

10-13 09:36