Excel 公式 INDEX MATCH 多个搜索条件

Excel Formula INDEX MATCH multiple search criteria

我正在尝试找到一种方法来根据多个条件进行索引匹配,但我运气不佳。

我有 3 个文本条目要标记 "Harmful" 标签,它们是“c001”、“c002”和“c003”..它们可能不在排序列表中。

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

现在上面的这个很完美,但是嵌套 IF 语句和 IF(OR 公式的每个组合都不适合我!

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

任何 advice/guidance 将不胜感激。

亲切的问候。

是否有特殊原因需要采用 INDEX 函数的形式,或者需要全部在一列中完成? (如果是,我会在您的公式中冒险猜测您希望 INDEX 函数查看 MATCH 函数中的同一列 B?...也许它不起作用的原因之一?)

恕我直言,一个更简单的解决方案是在您的列表旁边添加一些新列,这些列检查每个搜索字符串是否存在,并记录一个标志 1,它断言存在。 FIND 函数可能就是您所追求的,returns 如果找不到引用字符串,则会出错。

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

在单元格 I9 中 =IF(ISERROR(FIND("C002",F)),1,0)

...等等

然后在这些检查列的末尾,对值求和。然后您将知道总和是否大于零,然后至少找到了一个错误字符串,这是一个有害的标记值。

如果你确实想用一个公式来做,试试这个:-

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

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

选择:-

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

我要补充的是,嵌套的 IF 和 OR 不适用于 OP 的公式的原因是,当匹配第一次失败时,公式的执行直接进入 IFERROR 语句中的空字符串“”,所以它不评估任何其他条件。您必须像这样将它们分开:-

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