MS Excel: поиск первого вхождения определенного текста в строке с использованием списка диапазонов столбцов - PullRequest
0 голосов
/ 24 декабря 2018

Используя формулу MS Excel, которая находит и извлекает самый первый (1-й) экземпляр / вхождение конкретного слова, найденного в диапазоне ключевых слов в столбце.

В ячейке A2 у меня есть подстрока текстасодержит следующее:

Карен родилась в Акроне, штат Огайо, и уехала в колледж в Мобиле, штат Алабама, до переезда в Атланту, штат Джорджия, вскоре после того, как ее родители вышли на пенсию и теперь живут в Роли, штат Северная Каролина.

КолонкаB2: B10 (Список ключевых слов города и штата в списке столбцов)

Tulsa, OK  
New York, NY  
Boise, ID  
Atlanta, GA   
Baltimore, MD  
Raleigh, NC  
Pittsburgh, PA  
Akron, OH  
Mobile, AL

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

=IFERROR(INDEX($B$2:$B$10,MATCH(TRUE,COUNTIF(A2,"*"&$B$2:$B$10&"*")>0,0)),"")

-AND-

=IFERROR(INDEX($B$2:$B$10,MATCH(TRUE,ISNUMBER(SEARCH"*"&$B$2:$B$10&"*",A2)),0)),"")

Оба результата возвращены: Мобильный, AL

Ожидаемые результаты:

Правильные результаты = Акрон, OH

Примечание: хотя естьчетыре возможных соответствия, вместо этого он сопоставляет и извлекает / извлекает Акрон, Огайо, так как он ищет и находит позицию ключевого слова справа налево.

1 Ответ

0 голосов
/ 24 декабря 2018

Оба результата возвращены: Mobile, AL

Обе из ваших попыток массива на самом деле вернули мне Атланта, GA .

находит позицию ключевого слова справа налево.

Вы имеете в виду Слева направо ?

Это на самом деле довольно распространенная проблема.Вам нужно найти МИНУЛ всех совпадающих позиций ПОИСКА подстрок в строке, а затем использовать его, чтобы найти индекс подстрок в списке.

=INDEX(B2:B10, AGGREGATE(15, 7, ROW(1:9)/(SEARCH(B2:B10, A2)=AGGREGATE(15, 7, SEARCH(B2:B10, A2), 1)), 1))

enter image description here

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