Excel匹配多个标准加search

接下来从我以前的两个问题开始: Excel匹配多个条件 , Excel从search值位于单元格范围内的单元格中查找单元格 。 如果我张贴的道歉,但我认为每个问题稍有不同,困扰人们后续的问题似乎不公平,如果我不能标记他们的答案是正确的。

我有这样的代码工作,检查3列的数据,如果满足所有的条件,从范围1返回一个值:

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(SEARCH(range4,J2)),0)) 

但是,如果在range4或range5中find匹配项,我需要使用SEARCH选项,感谢来自这个站点的John Bustos和Barry Houdini,我知道如何在MATCH函数中使用OR命令:

 =INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(((C2 = range4)+(D2 = range5))>0),0)) 

上面的代码适用于精确匹配,但C2和D2的值是单个单元格中包含的数字列表,而range4和range5是每个单元格中的单个年份,因此必须使用SEARCH函数来检查单个年份是否存在于年份列表。 所以,从以上两段代码来看,我认为这是可行的:

 =INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(((SEARCH(range4,J2))+(SEARCH(range5,J2))>0)),0)) 

但是,它不,也不:

 =INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(((SEARCH(range4,J2))+(SEARCH(range5,J2)))),0)) 

我记得按CTRL + SHIFT + ENTER,它总是返回#N / A。 我知道它应该返回值作为第一个例子,在我尝试使它成为一个OR命令之前工作。

我希望有人能够对此有所了解。 提前致谢,

最好的祝愿,

您在更改为SEARCH时遇到的问题是:在公式的前一个版本中C2=range4 ,结果为TRUE或FALSE,而SEARCH(range4,J2)范围4 SEARCH(range4,J2)返回一个数字(J2中范围4值的位置)值! 错误,如果它不在J2中

…所以如果只有一个searchfind一个值,而另一个没有,你仍然会得到一个没有和MATCH不会得到匹配的错误,所以“OR”不起作用……..解决你需要添加一些东西让search返回TRUE或FALSE – 你可以用ISNUMBER,即

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(ISNUMBER(SEARCH(range4,J2))+ISNUMBER(SEARCH(range5,J2))>0),0))

还要注意你引用的第一个公式:

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(SEARCH(range4,J2)),0))

可能无法按预期工作,因为SEARCH可能会返回1以外的数字,所以您还需要ISNUMBER,即

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*ISNUMBER(SEARCH(range4,J2)),0))

对于数组公式不是“Ctrl + Shift + Enter”。 尝试一下,看看它是否做了什么。