Почему функция SEARCH () с разделением запятыми или именованным диапазоном не работает в Excel - PullRequest
0 голосов
/ 09 мая 2019

Я хочу найти текст в ячейке по предварительно заданным ключевым словам в Excel 2016. Я использую функцию SEARCH (). Что бы я ни делал, как только я ввел несколько «find_text», моя функция SEARCH возвращает «#VALUE!» ошибка.

Мой "inside_text" - это ячейка в столбце таблицы с именем "Message". текст «Исключение при бронировании новой сделки, ошибка: неизвестная ошибка (0)», а ключевые слова, которые я ищу, - {«Успех», «Неизвестно», «Сбой»}

=SEARCH({"Success","Unknown","Failed"},Q_DTL_GetAll__3[@MESSAGE])

Я даже использовал Named Range вот так

=SEARCH(Test,Q_DTL_GetAll__3[@MESSAGE])

Каждый раз, когда я получаю "# ЗНАЧЕНИЕ!" ошибка, в то время как я ожидаю положение слова "Неизвестно" в пределах_текста.

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Проблема в том, что если он может содержать только одно из этих слов, то, если он не содержит ни одного из ключевых слов, функция ПОИСК выдаст ошибку. Захватите это, используя IFERROR, чтобы установить ошибки (значения не найдены) в 0, а затем получите МАКС, чтобы найти позицию слова, которое было найдено (если есть). Если значения не найдены, то результатом будет просто 0:

=MAX(INDEX(IFERROR(SEARCH({"Success","Unknown","Failed"},Q_DTL_GetAll__3[@Message]),0),))
0 голосов
/ 09 мая 2019

Вы можете использовать нормально введенную функцию:

=AGGREGATE(14,6,SEARCH({"Success","Unknown","Failed"},Q_DTL_GetAll__3[@MESSAGE]),1)

Ваш SEARCH возвращает массив значений. В данном случае:

{#VALUE!,42,#VALUE!}

Так что вам нужен какой-то способ только возврата значения, не являющегося ошибкой AGGREGATE может сделать это.

Эта формула вернет ошибку #NUM!, если ни одно из слов не присутствует. Вы можете справиться с этим, как пожелаете.

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