【问题标题】:Excel Formula INDEX MATCH multiple search criteriaExcel 公式索引匹配多个搜索条件
【发布时间】:2016-10-17 13:38:35
【问题描述】:

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

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

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

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

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

任何建议/指导将不胜感激。

亲切的问候。

【问题讨论】:

    标签: excel if-statement match formula


    【解决方案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 公式的原因是,当匹配第一次失败时,公式的执行会直接转到 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","")
    

    【讨论】:

    • 这很好用,但是它不能按我的意愿工作,我使用的是 MATCH 函数,因为所有这 3 个都是行标题,我只希望它在有值时将其标记为有害这些行之一。如果这有意义的话。
    • 我不太清楚你的意思,你的意思是如果找到一个字符串,而不是两个或三个字符串,你的意思是你只希望它说“有害”吗?可能需要一个例子来解释它对我来说。
    • 或者您想将 F 列与 B 配对,然后将 G 与 C 配对或类似的东西?
    【解决方案2】:

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

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

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

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

    ...等

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-08
      • 2019-10-22
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2018-10-07
      相关资源
      最近更新 更多