首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找特定字符串时多条件索引匹配

查找特定字符串时多条件索引匹配
EN

Stack Overflow用户
提问于 2021-11-27 01:59:45
回答 2查看 56关注 0票数 1
代码语言:javascript
复制
   A          B          C
1  Name       Last Name  ID
2  Ben        Dafflin    ID1001
3  Yu         Yiin       ID1002
5  Max        Gray       ID1003
6  John Carl  Flit       ID1004
代码语言:javascript
复制
Situation 1 : Index Match with wildcards "*" (Working Fine!)
Formula    : =INDEX($C:$C,MATCH("*John*",$A:$A,0))
Result      : ID1004


Situation 2 : Index Match with multiple criteria (Working Fine!)
Formula     : =IFERROR(INDEX(D:D,MATCH(1,(B:B="Flit")*(C:C="John Carl"),0)),"")
Result      : ID1004

问题:在情况2中,如果它只查找带有"Carl""*Carl*"的单元格,则无法工作。任何建议我将如何使用具有多个条件的索引匹配的情况2,但仍然可以查找包含此类特定字符串的单元格。

EN

回答 2

Stack Overflow用户

发布于 2021-11-27 02:48:17

要让你的第二个公式返回值,你只需要引用正确的列:=IFERROR(INDEX(C:C,MATCH(1,(B:B="Flit")*(A:A="John Carl"),0)),"")

如果您想在具有多个条件的MATCH中使用通配符,您可以尝试:

代码语言:javascript
复制
=INDEX(C:C,MATCH(1,1/(ISNUMBER(SEARCH("*Carl*",A:A))*(B:B="Flit")),0))

如果您使用Office 365

代码语言:javascript
复制
=FILTER(C:C,ISNUMBER(SEARCH("*Carl*",A:A))*(B:B="Flit"))
票数 1
EN

Stack Overflow用户

发布于 2021-11-27 21:30:55

与多列匹配时的查找

还有另一种方法,它更简单,也可能更适合:

代码语言:javascript
复制
{=INDEX(C:C,MATCH("*CarlFlit",A:A&B:B,0))}

当然,上面是一个数组公式(因此是开始的{和结束的})

a)匹配的数组是连接成单个字符串的列AB的行

b)这个特定的例子当然是寻找(*通配符) *CarlFlit

c)当然,它可以是值和有效MATCH wildcards的任意组合

如果要查找的值在单元格中(而不是硬编码到公式中),则只需引用这些单元格:

代码语言:javascript
复制
{=INDEX(C:C,MATCH(E2&F2,A:A&B:B,0))}

要添加对不匹配的检查(使用上面的第一个示例):

代码语言:javascript
复制
{=IF(ISNUMBER(MATCH("*CarlFlit",A:A&B:B,0)),INDEX(C:C,MATCH("*CarlFlit",A:A&B:B,0)),"Not Found")}

附加信息

上面的公式可以是扩展的,以适应任意数量的列的匹配。

O只需在每个额外的列中执行& (以适合您的目的的顺序)。

出于performance的原因,让查找函数查看整个列并不是一个好主意。

a)更好地使用(例如) {=INDEX($C$1:$C$1000,MATCH("*CarlFlit",$A$1:$A$1000&$B$1:$B$1000,0))}

b)其中1000当然是您查找范围内的示例last row

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70131547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档