Вопрос или проблема
Я разобрал это, но продолжаю получать ошибку VALUE в Excel. Может кто-то сказать мне, что я делаю не так? На моем листе есть ячейка с именем “MaterialType”, которая заполняется из выпадающего списка текстовых значений. Значения в выпадающем списке получаются из проверки данных, ссылающейся на диапазон ячеек в другом листе (и эти ячейки фактически заполняются данными из онлайн-запроса к веб-базе данных наших продуктов). Ячейка отформатирована как “общая”, и некоторые фразы (строки) в списке содержат слово “steel”, а другие нет. Список текстов включает пробелы, круглые скобки и множество различных слов. Большинство вариантов НЕ содержит этот ключевой фраз, который я ищу. Некоторые примеры:
- стальная плита
- угловое железо (нержавеющая сталь)
- алюминий
- закаленный-сплав
Когда я выбираю тот, который действительно содержит слово steel, все работает как следует (показывает “FOUND”), но если я выбираю любой из остальных, я получаю ошибку #VALUE!.
=IF( SEARCH("steel",MaterialType)>0, "FOUND", "NOT FOUND" )
Попробуйте использовать следующую формулу:
• Формула, использованная в ячейке B2
=IF( 1-ISERR(SEARCH("steel",A2)), "FOUND", "NOT FOUND" )
Вы также можете использовать ISNUMBER()
вместо 1-ISERR()
=IF(ISNUMBER(SEARCH("steel",A2)), "FOUND", "NOT FOUND" )
Причина, по которой вы получаете ошибку:
Функция SEARCH()
возвращает позицию искомого слова в строке, что является числом; когда оно не находит ничего, возвращается ошибка #VALUE!, которая не больше 0, поэтому вы получаете аргумент FALSE как ошибку вместо NOT FOUND.
Ответ или решение
При работе с формулой SEARCH
в Excel, возникновение ошибки #VALUE!
может вызвать недоумение, особенно если она появляется в случае отсутствия искомого текста в строке. В приведенной вами ситуации, формула предупреждает о проблеме:
=IF(SEARCH("steel",MaterialType)>0, "FOUND", "NOT FOUND")
Причины и решение ошибки
Подробное объяснение проблемы:
Функция SEARCH
предназначена для поиска определенного текста внутри строки и возвращает номер позиции найденного текста. Если же текст не найден, SEARCH
выдаст ошибку #VALUE!
. Логически, этим объясняется ваше наблюдение: если слово "steel" присутствует, функция возвращает позицию и условие >0
выполняется, выдавая "FOUND". Но при отсутствии ключевого слова, функция сразу выдает ошибку, формула не может обработать условие и возвращает #VALUE!
.
Решение проблемы:
Для корректной работы формулы и обработки случаев отсутствия ключевого слова, рекомендуется воспользоваться функциями ISERR
или ISNUMBER
, которые помогают обходить ошибки, выдаваемые SEARCH
. Вот скорректированный вариант формулы:
=IF(ISNUMBER(SEARCH("steel", MaterialType)), "FOUND", "NOT FOUND")
Почему это работает:
-
ISNUMBER: Эта функция проверяет, является ли результат
SEARCH
числом. Если да (фраза найдена), она возвращаетTRUE
, и функцияIF
выдает "FOUND". Если нет, возвращаемое значение —FALSE
, выдающее "NOT FOUND". Это защищает формулу от ошибок#VALUE!
. -
1-ISERR: Альтернативный метод использовать
ISERR
, который проверяет на наличие любой ошибки. Однако в данном случаеISNUMBER
более интуитивно понятен и специфичен.
Контекст использования:
Эта ситуация, часто встречающаяся в анализе данных Excel, требует понимания логики работы с текстовыми функциями и ошибок. Эта информация будет полезна для тех, кто автоматизирует процессы анализа данных и стремится к повышенной стабильности и предсказуемости своих инструментов.
Оптимизация текста для SEO и предложения:
- Ключевые слова: Excel, формула, ошибка VALUE, поиск, функция SEARCH, обработка ошибок Excel.
- Простота и ясность: Объяснение структурировано и понятно, что увеличивает доверие.
Таким образом, корректная обработка ошибок при использовании функции SEARCH
в Excel повышает надежность ваших вычислений, помогая избежать неожиданных искажений в результатах анализа данных.