根据字符串在单元格上分配类别

根据字符串在单元格上分配类别

我将尝试解释我想要做什么,
我得到了一个巨大的文件,它报告了来自不同类型系统的警报文本

我在第一列收到警报(1 行 = 1 个警报文本),
我想根据从警报文本中提取的一些单词关联一个类别(在第二列)

例如:如果警报中出现单词 aaaa,则类别应为“A”,如果出现 bbbb,则类别应为“B”;.....

我有很多类别,超过 50 个...如果需要的话,我希望能够添加新的类别

我找到了一种“解决方案”,它采用了这种公式

IF(ISNUMBER(SEARCH("Wafer not";BD2));"HANDLING";"UKN")

BD2 是存储警报文本的位置

==> 基本上我在前一个公式中加入了一个新公式来涵盖所有类别

它看起来像那样(只是摘录):;

IF(ISNUMBER(SEARCH("mixing";BD2));"CC MIXING ALARM";IF(ISNUMBER(SEARCH("port";BD2));"LP ERROR";IF(ISNUMBER(SEARCH("mass flow";BD2));"MFC";IF(ISNUMBER(SEARCH("CC comm";BD2));"CC COMMUNICATION";IF(ISNUMBER(SEARCH("unclear";BD2));"UNCLEARED ALARM";IF(ISNUMBER(SEARCH("door";BD2));"COVER";IF(ISNUMBER(SEARCH("wafer level sens";BD2));"WAFER LEVEL SENSOR";IF(ISNUMBER(SEARCH("tank A";BD2));"COOLING TANK";IF(ISNUMBER(SEARCH("tank B";BD2));"COOLING TANK";IF(ISNUMBER(SEARCH("hdiw-unit";BD2));"HDIW UNIT";IF(ISNUMBER(SEARCH("labyrinth";BD2));"LABYRINTH ERROR";IF(ISNUMBER(SEARCH("FAN";BD2));"FAN";IF(ISNUMBER(SEARCH("handling";BD2));"HANDLING";IF(ISNUMBER(SEARCH("process has stopped";BD2));"PROCESS STOP";"UKN")))))))))))))

==> 但它真的很丑 ;-) ....如果如果如果如果如果如果.....

我确信可能存在更美好、更聪明的东西

如果你能帮我的话就太好了

在此先感谢您的帮助

问候

答案1

以下是您可以使用的数组公式:
=INDEX(Table2[[#All],[category]],MAX(IF(ISNUMBER(SEARCH(Table2[[#All],[word]],D2)),ROW(Table2[[#All],[word]]),"")))

  • IF(ISNUMBER(SEARCH(Table2[[#All],[word]],D2)),ROW(Table2[[#All],[word]]),"")Word-在文本中搜索每一个,如果找到则返回行号,如果没有找到则返回“”(空字符串)
  • MAX(IF(...))- 选择返回的最大数字IF(如果匹配多个类别,则返回最后一个)
  • =INDEX(Table2[[#All],[category]],MAX(...))- 从相应行返回类别
  • 它是一个数组公式,因此您需要按CTRL+ SHIFT+ENTER来插入它。

要使用它,您需要将包含关键字和类别的范围转换为表格(插入 - 表格),您可能需要在公式中更改表格的名称。

在此处输入图片描述

相关内容