я постараюсь объяснить, что я хотел бы сделать
у меня есть огромный файл, который сообщает текст тревоги из разных систем

я первый столбец я получил сигнал тревоги (1 строка = 1 текст сообщения)
я хотел бы связать категорию (на 2-й колонке) в зависимости от некоторых слов извлекать из текста тревоги

Например: если в сигнале тревоги присутствует слово 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 ответ1

0

Вот формула массива, которую вы можете использовать:
=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, чтобы вставить ее.

Чтобы использовать это, вам нужно преобразовать свой диапазон, содержащий ключевые слова и категории, в таблицу (insert - table), вам может потребоваться изменить имя таблицы в формуле.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .