你能为excel中的= if(isnumber(search)))公式做多个选项吗?

时间:2015-01-09 19:14:03

标签: excel

此公式查找字符串" BFA"在细胞内I3。如果找到,则返回" BFA&#34 ;;如果没有,则返回"否"。

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

如何修改此功能以同时处理多个字符串?例如,如果找到{" BFA"," MFA"," BA"," MA"}中的任何一个,那么返回的是发现;如果没有,请返回"否"。

5 个答案:

答案 0 :(得分:4)

您可以将此版本与LOOKUP

一起使用

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

SEARCH函数返回数字或错误的数组(取决于是否找到每个字符串)。当您在该数组中查找2^15时,匹配始终为最后数字,然后LOOKUP将返回相应的文本字符串。如果没有匹配项,则会#N/AIFERROR将其转换为"否"。

因此,如果您有任何包含" BFA"例如,公式将返回列表中的最后一个,即" BA"。

答案 1 :(得分:3)

这绝对可行,但我建议采用不同的方法:

=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))

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

答案 2 :(得分:0)

这将满足您的需求:

=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语句越多,但它会变得非常复杂。您可以考虑在将来尝试自定义公式。

答案 3 :(得分:0)

这是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我建议在搜索范围内找到要搜索的内容以及搜索应返回的内容,如图所示。如果愿意,您可以将其放在单独的工作表上或隐藏这些列。

答案 4 :(得分:0)

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

=IF(ISERROR(MATCH(A2,$D:$D,0)),"Body","Face")

A        B       C    D
                      Face Parts
Ear      Face         Ear 
Mouth    Face         Mouth 
Leg      Body