Обратный Wild Card Vlookup - PullRequest
       38

Обратный Wild Card Vlookup

0 голосов
/ 10 октября 2018

Я пытаюсь выполнить для меня то, что похоже на обратный поиск по шаблону, но если у кого-то есть предложения по лучшей формуле, я полностью открыт для этого.

У меня есть столбец с несколькими словами в ячейке, например: (дом был коричневого цвета), а затем у меня есть таблица, в которой есть столбец цветов и столбец значений ex: (A2 = коричневый,B2 = 1738) и я хотел бы запустить vlookup (дом коричневого цвета) и вернуться со значением 1738.

На мой взгляд, формула выглядит следующим образом

=vlookup("the house was brown",sheet2!"*"&A:B&"*",2,false)

Где подстановочные знаки привязаны к значениям поиска, но, похоже, это не работает, и я поиграл сразмещение подстановочных знаков и оказались ни с чем.

Любая помощь будет высоко ценится.

Спасибо!

1 Ответ

0 голосов
/ 10 октября 2018

Из вопроса, у вас есть данные, как:

Данные в 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 () с массивом, содержащим пустые ячейки.

...