Следующее даст вам индекс слова первого слова, которое содержит вашей подстроки:
=SEARCH(B1,A1)-LEN(SUBSTITUTE(LEFT(A1,SEARCH(B1,A1))," ",""))+1
Если у вас есть доступ к FILTERXML
, вы можете получить его, бросив в некоторых MATCH
, и это будет возвращать индекс слова для точного соответствия:
=MATCH(B1,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"),0)
Примечание: Вторая формула должна быть введена через Ctrl Shift Enter
Что касается @BigBen, вы можете столкнуться с проблемной водой, если ваша строка содержит специальные символы, такие как запятая и тому подобное. В этом случае вы можете добавить больше вложенных SUBSTITUTE
формул, чтобы позаботиться об этом сценарии.
Если вам нужно несколько совпадений и вы хотите, чтобы они были объединены в одну ячейку, вы ' Вам понадобится доступ к функции TEXTJOIN
. Чтобы получить все словарные индексы слов, которые содержат вашу подстроку:
=TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH(B1,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"))),ROW(A1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1," ","")))),""))
Чтобы получить все точные совпадения, которые содержат значение поиска:
=TEXTJOIN(", ",TRUE,IF(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s")=B1,ROW(A1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1," ","")))),""))
Примечание: Обе формулы необходимо вводить с помощью Ctrl Shift Введите