使用嵌套的 If 语句或查找表对 Excel 中的字符串数据进行分类

使用嵌套的 If 语句或查找表对 Excel 中的字符串数据进行分类

我正在尝试根据特定单元格中包含的字符串值对数据进行分类。例如,如果单元格 P6 包含单词“医院”或“疗养院”,则单元格 B2 应将其类别列为“医院”,如果 P6 包含“机场”、“航站楼”或“航空”,则 B2 应列出“机场”。

首先,我尝试使用 If 函数,但是,我无法正确嵌套它们。

=IF(SEARCH("stadium",$P6)>=1,"Sport")

它按预期工作。它要么打印正确的类别,要么给出“VALUE!”错误。

但是,当我尝试扩展语句时,它无法识别添加的搜索词。

=IF(SEARCH("stadium",$P6)>=1,"Sport",IF(SEARCH("sanatorium",$P6)>=1,"Hospital"))

这仍然会找到字符串“stadium”,但无法识别“sanatorium”。如果 P6 包含单词“sanatorium”,这仍然会给我 #VALUE!。

如果您能为我指明正确的方向,或者告诉我如何使用查找表等其他方法来实现这一点,那就太好了。

答案1

这是因为,SEARCH 返回一个数字或一个错误。如果未找到该单词,则返回一个错误。

因此,如果单元格不包含stadium错误,#VALUE则会返回到第一个搜索,并且您无法尝试将其等同于数字,并且整个公式会短路并#VALUE返回。

用来ISNUMBER克服。 如果返回的是错误ISNUMBER则会返回:FALSE

=IF(ISNUMBER(SEARCH("stadium",$P6)),"Sport",IF(ISNUMBER(SEARCH("sanatorium",$P6)),"Hospital"))

现在,正如您所假设的,创建一个包含搜索条件和预期输出的表,然后使用查找类型公式返回正确的输出,这样会更好、更容易:

=INDEX(F:F,AGGREGATE(15,6,ROW($E$1:INDEX(E:E,MATCH("zzz",E:E)))/(ISNUMBER(SEARCH($E$1:INDEX(E:E,MATCH("zzz",E:E)),A1))),1))

这将遍历表并返回第一个匹配的第一个输出。

在此处输入图片描述

相关内容