2012-11-28 151 views
1

这跟随我的前两个问题:Excel Match multiple criteriaExcel find cells from range where search value is within the cell。如果我过度发布道歉,但我认为每个问题都略有不同,如果我不能将他们的答案标记为正确,那么困扰人们的后续问题似乎不公平。Excel匹配多个条件加搜索

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

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

不过,我需要的搜索选项来工作,如果比赛是从这个网站,我知道如何匹配函数中使用或命令的范围4 OR range5,以及约翰·布斯托斯和巴里胡迪尼感谢发现:

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

上面的代码工作的完全匹配,但C2的值和D2是单个单元格中包含的数字列表,以及范围4和r ange5是每个单元中的单年,所以必须使用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命令。

我希望有人能够对此有所了解。在此先感谢,

最良好的祝愿,

回答

1

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

...所以如果只有一个SEARCH找到一个值而另一个不存在,那么你仍然会得到一个错误,而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))

如预期

可能无法工作,因为搜索可能返回1以外的数,所以你需要ISNUMBER有作为,即

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

+0

就是这个!我认为这会是这样的,但我冗长的解决方法导致了记忆问题。我添加(搜索(范围4,J2))> 0,1,0)+(IF(搜索(范围5,J2))> 0,1,0),但我甚至无法评估。谢谢巴里,你帮我解决了当时的工作,我非常感谢你的帮助和非常简洁的解释。 – JoeP

1

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

+0

哎呀,的确是这样,这也是我一直在用我的大脑做在自动驾驶上只需键入DEL。 – JoeP

+0

用户安全登录...完全理解!干杯! –