【问题标题】:Can you do multiple options for the =if(isnumber(search))) formula in excel?您可以在 excel 中为 =if(isnumber(search))) 公式做多个选项吗?
【发布时间】:2015-01-09 19:14:02
【问题描述】:

此公式在单元格 I3 中查找字符串“BFA”。如果找到,则返回“BFA”;如果不是,则返回“否”。

=IF(ISNUMBER(SEARCH("BFA",I3)),"BFA","No")

如何修改它以同时处理多个字符串?例如,如果找到 {"BFA", "MFA", "BA", "MA"} 中的任何一个,则返回找到的内容;如果不是,则返回“否”。

【问题讨论】:

  • 我不相信SEARCH 可以这样工作......但你可以嵌套几个IF(ISNUMBER(SEARCH(...))) 语句。喜欢IF(ISNUMBER(SEARCH("BFA",I3)),"BFA",IF(ISNUMBER(SEARCH("MFA",I3)),"MFA",IF(...

标签: excel


【解决方案1】:

这是绝对可能的,但我会推荐一种不同的方法:

=INDEX({"BFA","MFA","BA","MA","No"},MATCH(1,COUNTIF(I3,"*"&{"BFA","MFA","BA","MA",""}&"*"),0))

您还可以将要查找的项目放在一系列单元格中,并将它们的结果放在它们旁边的区域中。因此,如果您有以下设置:

    _____A____  ___B__
1   Search For  Return
2   BFA         BFA
3   MFA         MFA
4   BA          BA
5   MA          MA
6               No

那么公式应该是这样的:

=INDEX($B$2:$B$6,MATCH(1,COUNTIF(I3,"*"&$A$2:$A$6&"*"),0))

为了使其具有可扩展性和可更新性,我建议将要搜索的内容以及如果在所示范围内找到该搜索应返回的内容。如果愿意,您可以将其放在单独的工作表上或隐藏这些列。

【讨论】:

  • 这是一个很好的方法 - 请注意,后一个公式需要数组输入,如果 I3 为空白,两个版本仍然会出现 #N/A 错误
【解决方案2】:

您可以将此版本与LOOKUP一起使用:

=IFERROR(LOOKUP(2^15,SEARCH({"BFA","MFA","BA","MA"},I3),{"BFA","MFA","BA","MA"}),"No")

SEARCH 函数返回一个由数字或错误组成的数组(取决于是否找到每个字符串)。当您在该数组中查找 2^15 时,匹配总是与 last 数字,然后 LOOKUP 返回相应的文本字符串。如果没有匹配项,您将得到 #N/AIFERROR 将其转换为“否”。

例如,如果您有任何同时包含“BFA”和“BA”的单元格,则公式将返回列表中的最后一个,即“BA”。

【讨论】:

    【解决方案3】:

    这将满足您的需求:

    =IF(ISNUMBER(FIND("BFA",I3)),"BFA",IF(ISNUMBER(FIND("MFA",I3)),"MFA",IF(ISNUMBER(FIND("BA",I3)),"BA",IF(ISNUMBER(FIND("MA",I3)),"MA","NO")))
    

    尽管您所做的If 语句嵌套越多,它就会变得非常复杂。您将来可能会考虑尝试自定义公式。

    【讨论】:

      【解决方案4】:

      这是absolutely possible,但我推荐different approach

      =INDEX({"BFA","MFA","BA","MA","No"},MATCH(1,COUNTIF(I3,"*"&{"BFA","MFA","BA","MA",""}&"*"),0))
      

      您还可以将要查找的项目放在一系列单元格中,并将它们的结果放在它们旁边的区域中。因此,如果您有以下设置:

          _____A____  ___B__
      1   Search For  Return
      2   BFA         BFA
      3   MFA         MFA
      4   BA          BA
      5   MA          MA
      6               No
      

      那么公式应该是这样的:

      =INDEX($B$2:$B$6,MATCH(1,COUNTIF(I3,"*"&$A$2:$A$6&"*"),0))
      

      为了使它成为scalable and updatable,我建议将要搜索的内容以及如果在所示范围内找到该搜索应返回的内容。如果愿意,您可以将其放在单独的工作表上或隐藏这些列。

      【讨论】:

        【解决方案5】:

        B 列中的公式 - 向下复制该列

        =IF(ISERROR(MATCH(A2,$D:$D,0)),"Body","Face")
        
        A        B       C    D
                              Face Parts
        Ear      Face         Ear 
        Mouth    Face         Mouth 
        Leg      Body
        

        【讨论】:

        • 虽然这可能会回答作者的问题,但它缺少一些解释性文字和/或文档链接。如果没有围绕它们的一些短语,原始代码 sn-ps 并不是很有帮助。您可能还会发现how to write a good answer 非常有帮助。请编辑您的答案 - From Review
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多