Как вернуть несколько результатов в одной ячейке, используя Index, Match и Search - PullRequest
1 голос
/ 10 июля 2019

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

В настоящее время формула дает мне только первый результат, который она находит в моем ключе, но мне бы хотелось, чтобы она возвращала как можно больше результатов, разделенных Pipes или запятыми.

Вот рабочаяформула, которая дает мне 1 результат.

=IF((ARRAYFORMULA(INDEX('Array Key'!$J:$J,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$I:$I,$B2)),0))))="",(ARRAYFORMULA(INDEX('Array Key'!$L:$L,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$K:$K,$A2)),0)))),(ARRAYFORMULA(INDEX('Array Key'!$J:$J,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$I:$I,$B2)),0)))))

Это было бы здорово, если бы я мог заставить его работать.Вот ссылка на копию моей электронной таблицы, если кто-то хотел бы, чтобы она работала.Не стесняйтесь вносить изменения.

https://docs.google.com/spreadsheets/d/1APLCVnqmP51UbimyZeY-S0BoSEuFWkPa2LtAxVX9H0E/edit?usp=sharing

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

=IF((ARRAYFORMULA(INDEX('Array Key'!$F:$F,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$E:$E,$B2)),0))))="",(ARRAYFORMULA(INDEX('Array Key'!$H:$H,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$G:$G,$A2)),0)))),(ARRAYFORMULA(INDEX('Array Key'!$F:$F,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$E:$E,$B2)),0)))))&" | "&(ARRAYFORMULA(INDEX('Array Key'!$H:$H,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$G:$G,$A2)),0))))

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

1 Ответ

0 голосов
/ 10 июля 2019

, если это будет похоже на:

enter image description here


тогда D2 ячейка будет:

=ARRAYFORMULA(TEXTJOIN(" | ", 1, UNIQUE({
 IFERROR(VLOOKUP(TRANSPOSE(IFERROR(REGEXEXTRACT(SPLIT(B2, " "), 
 TEXTJOIN("|", 1, 'Array Key'!E$3:E)))), 'Array Key'!E$3:F, 2, 0));
 IFERROR(VLOOKUP(TRANSPOSE(IFERROR(REGEXEXTRACT(SPLIT(A2, " "), 
 TEXTJOIN("|", 1, 'Array Key'!G$3:G)))), 'Array Key'!G$3:H, 2, 0))})))

0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...