你可以为Excel中的= if(isnumber(search)))公式做多个选项吗?

此公式在单元格I3内查找string“BFA”。 如果find,则返回“BFA”; 如果不是,则返回“否”。

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

我怎样才能修改这个工作在同一时间多个string? 例如,如果find{“BFA”,“MFA”,“BA”,“MA”}中的任何一个,则返回发现的内容; 如果不是,则返回“否”。

这是完全可能的,但我会build议一个不同的方法:

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

为了使其具有可扩展性和可更新性,我build议将search内容和search应该返回的内容放在一起,如图所示。 你可以把它放在一个单独的工作表或隐藏这些列如果首选。

你可以用LOOKUP使用这个版本:

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

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

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

这将做你正在寻找的东西:

 =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语句嵌套越多,它就会变得非常复杂。 你可能会考虑在未来尝试一个自定义公式。

这是absolutely possible ,但我会build议一个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我build议将search内容和search应该返回的内容放在一起,如图所示。 你可以把它放在一个单独的工作表或隐藏这些列如果首选。