之前我使用过这种形式的INDEX(MATCH())
公式,但从未使用过通配符。任何人都可以解释为什么在A2&"*"
中添加会返回错误值?我检查了数据,肯定应该匹配。
公式如下:
{=INDEX(I1:M1000,MATCH(1,(M1:M1000=Sheet3!B1)*(I1:I1000=A2&"*"),0),2)}
答案 0 :(得分:6)
假设A2包含“abc”。
您可以在匹配声明的搜索字符串中放置一张外卡,例如
MATCH(A2&"*",I1:I1000,0)
搜索以abc开头但不在您搜索范围内的任何内容。
另外,括号
(I1:I1000=A2&"*")
只是将I1:I1000范围内的每个单元格与A2&amp;“*”进行比较,因此在此上下文中,它只是使用“abc *”进行每个单元格的字面匹配,而*不能用作通配符。< / p>
您可以尝试使用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)