Извлечь слово из строки, содержащей определенный символ в подстроке

В MS Excel я хотел бы использовать формулу для извлечения только слова из ячейки, содержащей определенный символ ("=") в тексте.

A2: Долли приготовила мне домашний торт = торт и кексы.

A3: у нас был чиз=торт на ужин

A4: Всем нравится, как пекарня делает потрясающие торты.

A5: Джонни приготовил себе ужин = прошлой ночью, а затем убрал кухню.

A6: Было огромное количество дождей. Штат = Оклахома.

Я хотел бы, чтобы следующее из столбца (A2: A4) предоставило следующие результаты в столбце (B2: B4).

B2: домашний = торт

B3: сыр = пирог

B4: круто = пирожные

B5: ужин = вчера вечером

B6: Штат = Оклахома

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


person Miaka3    schedule 17.09.2015    source источник


Ответы (2)


Используйте старый прием синтаксического анализа текста, который значительно увеличивает расстояние между словами с повторяющимися нулями через ЗАМЕНИТЬ и Функции ПОВТОРА, которые обеспечивают более широкое пролистывание нужной подстроки.

Разобрать подстроку с помощью SUBSTITUTE и REPT

Формула в B2:

=TRIM(MID(SUBSTITUTE(A2, " ", REPT(" ", 99)), MAX(1, FIND("=", SUBSTITUTE(A2, " ", REPT(" ", 99)))-50), 99))

Функция TRIM ( используется в качестве оболочки) удаляет начальные и конечные пробелы.

person Community    schedule 18.09.2015
comment
не могли бы вы сказать мне значение 99 и 50 в этой формуле. Извините, но я не мог понять. - person ManishChristian; 18.09.2015
comment
SUBSTITUTE(A2, " ", REPT(" ", 99)) превращает каждый пробел в предложении в 99 пробелов, поэтому слова очень разнесены. После нахождения знака = мы возвращаемся на 50 символов назад (что должно поставить нас в середину одного из 99 пробелов, а затем собираем все для следующих 99 символов. У вас осталось ‹лотов) пробелов›‹то, что вы хотите›‹много пробелов›. TRIM избавляется от нежелательных начальных/конечных пробелов. Если извлекаемая подстрока была больше, просто замените ее на 999 и 500. - person ; 18.09.2015
comment
Умная идея. Благодарю за разъяснение. - person ManishChristian; 18.09.2015

Для этого я использовал 5 вспомогательных столбцов; их можно было бы свернуть в одну очень длинную форуму, но я предпочитаю так (думаю, так легче отследить источник любых ошибок). Учитывая строки, которые у вас есть в A2; В B2 это находит местоположение "="

=SEARCH("=",A2)  

В C2 это находит номер экземпляра " ", предшествующего "="

=B2-LEN(SUBSTITUTE(MID(A2,1,B2)," ",""))  

В D2 это отмечает местоположение этого " "

=SEARCH(CHAR(33),SUBSTITUTE(A2," ",CHAR(33),C2))  

В E2 это находит " " после "=", или если "=" появляется в последнем слове в ячейке, он отмечает полную длину ячейки +1

=IFERROR(SEARCH(" ",A2,B2),LEN(A2)+1)  

Используя эти значения в F2, это вытягивает строку из предшествующего " " в конечный " "

=MID(A2,D2+1,E2-D2-1)
person 12V_man    schedule 17.09.2015
comment
Майкл, спасибо, это сработало отлично - :) Оба предоставленных ответа работают, но в этом случае лучше всего работает более короткий массив формул и использование только одного столбца ячеек. - person Miaka3; 19.09.2015