Из вопроса, у вас есть данные, как:
Данные в A1: A4
Мышь коричневая
Дом коричневый
Машина красная
Робинкрасный
дополнен таблицей поиска вида
Именованный диапазон "LookupTable"
Col1;Col2
коричневый;5
красный;6
синий;7
и т. Д.
Тогда формула
=trim(join(" ",arrayformula(iferror(vlookup((iferror(regexextract(lower(A1),"\b"&LookupTableCol1&"\b"),"")),LookupTable,2,FALSE),""))))
в B1: B4, где A1 - это верхний правый угол LookupTable, дает вывод
Выходные данные:
5
5 6
6
6
То есть каждый экземпляр слова таблицы поиска идентифицируется соответствующим номером, и эти числа перечислены (разделенные пробелами) по одному в одной ячейке.
Обратите внимание, что таблица поиска должна быть в нижнем регистре для получения положительных совпадений.
Это то, что вы искали?
Для редактирования, тестирования или уточнения ответа здесь есть ссылка на электронную таблицу, показывающую это в действии, которую я удалю, как только ответ будет принят.
Разъяснение того, как это работает
Это работает с помощью
(1) Использование с помощью регулярного выражения со строковым литералом для определения наличия одного из слов поиска в LookupTableCol1.Часть «\ b», добавляемая к каждому концу, гарантирует, что она соответствует целому слову, а функция lower () используется для гарантии того, что наши результаты не чувствительны к регистру.
(2) Затем эта информация вводится в vlookup() для поиска этого слова в таблице поиска и возврата соответствующего значения.
(3) «iferror ()» используется для удаления любых ошибок «N / A», если в regexextract () не найдено совпадений.или vlookup ().
(4) Arrayformula () используется для повторения этих действий до LookupTableCol1 и возврата массива (5) Join () используется для объединения всего массива в одну ячейку для удобства чтения.
(6) Trim () используется для удаления любых начальных или конечных пробелов, возникающих в результате пустых ячеек в массиве, возвращаемых из формулы массива в результате использования join () с массивом, содержащим пустые ячейки.