索引与通配符和多个条件匹配
index match with wildcards and multiple criteria
我以前使用过 INDEX(MATCH())
这种形式的公式,但从未使用过通配符。任何人都可以解释为两个为什么添加 A2&"*"
会 return 一个错误值?我检查了数据,肯定应该有匹配项。
公式如下:
{=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)
我以前使用过 INDEX(MATCH())
这种形式的公式,但从未使用过通配符。任何人都可以解释为两个为什么添加 A2&"*"
会 return 一个错误值?我检查了数据,肯定应该有匹配项。
公式如下:
{=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)