Excel公式INDEX MATCH多个搜索条件

时间:2016-10-17 13:38:36

标签: excel if-statement match formula

我正试图找到一种方法来在多个标准上进行INDEX MATCH,但我没有太多运气。

我有3个文本条目要标记“有害”标记,即“ c001 ”,“ c002 ”和“ c003 “......他们可能不在排序列表中。

=IFERROR(IF(INDEX(F9:F34,MATCH("*C001*",$B$9:$B$34,0)),"Harmful",""),"")

现在上面这个工作完美但是每个组合都有嵌套的IF语句和IF(OR公式对我不起作用!

请注意,我使用的是通配符,因为这些代码可能构成较长文本字符串的一部分。

非常感谢任何建议/指导。

亲切的问候。

2 个答案:

答案 0 :(得分:1)

如果您确实想在一个公式中执行此操作,请尝试以下方法: -

=IF(SUMPRODUCT(ISNUMBER(FIND({"C001","C002","C003"},B9:B34))*ISNUMBER(F9:F34)),"Harmful","")

实际上这与OP的INDEX / MATCH完全相同,因为上面公式中的F9:F34中的零将给出ISNUMBER = TRUE并且可以将其标记为有害,而在原始公式不会。

替代: -

=IF(SUMPRODUCT(ISNUMBER(FIND({"C001","C002","C003"},B9:B34))*N(+F9:F34)),"Harmful","")

我想补充一点,嵌套的IF和OR不能使用OP公式的原因是当比赛失败时第一次公式&#39 ; s执行直接进入空字符串""在IFERROR声明中,它不会评估任何其他条件。你必须将它们分开: -

=IF(IFERROR(INDEX(F9:F34,MATCH("*C001*",$B$9:$B$34,0)),0)+IFERROR(INDEX(F9:F34,MATCH("*C002*",$B$9:$B$34,0)),0)+IFERROR(INDEX(F9:F34,MATCH("*C003*",$B$9:$B$34,0)),0),"Harmful","")

答案 1 :(得分:0)

是否有特殊原因需要以INDEX函数的形式,或者需要在一列中完成所有操作? (如果是的话,我会在你的公式中猜测你希望INDEX函数看到你的MATCH函数中的同一列B?...也许是它的一个原因不工作?)

更简单的解决方案是在列表旁边添加一些新列,检查每个搜索字符串是否存在,并记录1的标志,该标志存在。 FIND函数可能就是您之后的函数,如果找不到引用字符串,则会返回错误。

即。

单元格H9 =IF(ISERROR(FIND("C001",F$9)),1,0)

中的

单元格I9中的

=IF(ISERROR(FIND("C002",F$9)),1,0)

...等

然后在这些检查列的末尾,总结值。然后你会知道总和是否大于零,然后至少找到你的坏字符串,这是一个有害的标记值。