Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Еще…Меньше
В этом разделе приводятся сведения о наиболее распространенных случаях возникновения ошибки #ЗНАЧ! в функциях НАЙТИ, НАЙТИБ, ПОИСК и ПОИСКБ.
Некоторые важные сведения о функциях НАЙТИ и ПОИСК
-
Функции НАЙТИ и ПОИСК очень похожи. Они работают одинаково: находят символ или текстовую строку в другой текстовой строке. Различие между ними в том, что функция НАЙТИ учитывает регистр, а функция ПОИСК — нет. Поэтому если при поиске нужно сопоставлять символы без учета регистра, используйте функцию ПОИСК.
-
Если вам нужно вернуть строку, содержащую указанное количество символов, используйте функцию ПСТР вместе с функцией НАЙТИ. Сведения об использовании функций ПСТР и НАЙТИ в сочетании друг с другом и примеры приведены в разделе справки по функции НАЙТИ.
-
Синтаксис этих функций одинаков: искомый_текст; просматриваемый_текст; [нач_позиция]). Обычным языком это можно выразить так: что нужно найти; где это нужно найти; с какой позиции следует начать.
Проблема: значение аргумента искомый_текст не удалось найти в строке просматриваемый_текст
Если функции не удается найти текст в указанной текстовой строке, она выкинуть #VALUE! ошибку «#ВЫЧИС!».
Например, рассмотрим следующую функцию:
-
=НАЙТИ(«перчатки»;»Перчатки (детские)»;1)
Отбросит #VALUE! из-за того, что в строке нет совпадающих «чков», но есть «Ящики». Помните, что в аргументе НАЙТИ задается find_text, поэтому убедитесь, find_text совпадает со строкой в within_text аргумента.
Однако функция ПОИСК вернет в этом случае значение 1, так как она не учитывает регистр:
-
=ПОИСК(«перчатки»;»Перчатки (детские)»;1)
Решение: Исправьте синтаксис необходимым образом.
Проблема: значение аргумента нач_позиция равно нулю (0)
Аргумент нач_позиция является необязательным. Если его опустить, используется значение по умолчанию, равное 1. Однако если этот аргумент указан и его значение равно 0, возникнет ошибка #ЗНАЧ!.
Решение: Удалите аргумент нач_позиция, если он не нужен, или присвойте ему правильное значение.
Проблема: длина значения нач_позиция превышает длину значения просматриваемый_текст
Например, рассмотрим следующую функцию:
-
=НАЙТИ(«и»;»Функции и формулы»;25)
Ищет «s» в строке «Функции и формулы»(within_text), начиная с 25-го символа(start_num),но возвращает #VALUE! из-за того, что в строке всего 22 символа.
Совет: Чтобы определить общее количество символов в текстовой строке, используйте функцию ДЛСТР.
Решение: Исправлять начальный номер.
У вас есть вопрос об определенной функции?
Задать вопрос на форуме сообщества, посвященном Excel
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Исправление ошибки #ЗНАЧ! #BUSY!
Функции НАЙТИ и НАЙТИБ
ФУНКЦИИ ПОИСКА и ПОИСКБ
Полные сведения о формулах в Excel
Рекомендации, позволяющие избежать появления неработающих формул
Обнаружение ошибок в формулах
Все функции Excel (по алфавиту)
Функции Excel (по категориям)
Нужна дополнительная помощь?
Вчера в марафоне 30 функций Excel за 30 дней у нас был разгрузочный день с функцией N (Ч), где мы выяснили, что она может возвратить число, основываясь на типе содержимого ячейки.
23-й день марафона мы посвятим изучению функции FIND (НАЙТИ). Она очень похожа на функцию SEARCH (ПОИСК), с которой мы встречались ранее, но функция FIND (НАЙТИ) чувствительна к регистру.
Итак, давайте посмотрим сведения и примеры по функции FIND (НАЙТИ). Если у Вас есть дополнительная информация или примеры, пожалуйста, делитесь ими в комментариях.
Содержание
- Функция 23: FIND (НАЙТИ)
- Как можно использовать функцию FIND (НАЙТИ)?
- Синтаксис FIND (НАЙТИ)
- Ловушки FIND (НАЙТИ)
- Пример 1: Находим текст в текстовой строке
- Пример 2: Находим точные значения на листе
- Пример 3: Находим название улицы в адресе
Функция 23: FIND (НАЙТИ)
Функция FIND (НАЙТИ) находит текстовую строку внутри другой текстовой строки с учётом регистра.
Как можно использовать функцию FIND (НАЙТИ)?
Функция FIND (НАЙТИ) может найти текст внутри текстовой строки, учитывая регистр символов. Например:
- Найти начальную позицию текста в текстовой строке.
- Найти точные данные на листе.
- Найти название улицы в адресе.
Синтаксис FIND (НАЙТИ)
Функция FIND (НАЙТИ) имеет вот такой синтаксис:
FIND(find_text,within_text,[start_num])
НАЙТИ(искомый_текст;просматриваемый_текст;[нач_позиция])
- find_text (искомый_текст) – текст, который Вы ищете.
- within_text (просматриваемый_текст) – текстовая строка, внутри которой происходит поиск.
- start_num (нач_позиция) – если не указан, то поиск начнётся с первого символа.
Ловушки FIND (НАЙТИ)
- Функция FIND (НАЙТИ) возвратит позицию первой совпадающей строки с учётом регистра. Для того, чтобы произвести поиск без учёта регистра, используйте функцию SEARCH (ПОИСК), которую мы уже рассматривали ранее в рамках марафона 30 функций Excel за 30 дней.
- В аргументе find_text (искомый_текст) функции FIND (НАЙТИ) нельзя использовать символы подстановки. Если Вы все-таки хотите их использовать, то применяйте функцию SEARCH (ПОИСК).
Пример 1: Находим текст в текстовой строке
Чтобы найти нужный текст в текстовой строке, используйте функцию FIND (НАЙТИ). Она чувствительна к регистру, поэтому на рисунке ниже первые два символа «i» игнорируются.
=FIND(B5,B2)
=НАЙТИ(B5;B2)
Чтобы обработать ошибки, возникающие, если текст не найден, поместите FIND (НАЙТИ) в функцию IFERROR (ЕСЛИОШИБКА). Если у Вас Excel 2003 или более ранняя версия, вместо IFERROR (ЕСЛИОШИБКА) используйте функцию IF (ЕСЛИ) вместе с ISERROR (ЕОШИБКА).
=IFERROR(FIND(B5,B2),"Not Found")
=ЕСЛИОШИБКА(НАЙТИ(B5;B2);"Not Found")
Пример 2: Находим точные значения на листе
Пользуясь тем, что функция FIND (НАЙТИ) чувствительна к регистру, Вы можете использовать её для точного поиска строки текста внутри другой строки. В этом примере в столбце E записаны значения допустимых кодов (Valid Codes). При помощи функции FIND (НАЙТИ) мы можем определить содержит ли значение в ячейке B2 хотя бы один из допустимых кодов.
Эта формула должна быть введена, как формула массива, нажатием Ctrl+Shift+Enter.
=IF(OR(ISNUMBER(FIND($E$2:$E$4,B2))),"Yes","No")
=ЕСЛИ(ЕЧИСЛО(НАЙТИ($E$2:$E$4;B2)));"Yes";"No")
Пример 3: Находим название улицы в адресе
В следующем примере большинство адресов в столбце B начинается с номера. При помощи формулы в столбце C мы проверяем, является ли первый символ цифрой. Если это цифра, то функция FIND (НАЙТИ) находит первый символ пробела, а функция MID (ПСТР) возвращает весь оставшийся текст, начиная со следующего символа.
=IF(ISNUMBER(--LEFT(B2,1)),MID(B2,FIND(" ",B2)+1,LEN(B2)),B2)
=ЕСЛИ(ЕЧИСЛО(--ЛЕВСИМВ(B2;1));ПСТР(B2;НАЙТИ(" ";B2)+1;ДЛСТР(B2));B2)
Оцените качество статьи. Нам важно ваше мнение:
|
|||
Vovik
04.07.07 — 20:10 |
Работает нормально только когда есть вхождение, а когда нет выдает ошибку. Как избавиться от ошибки? |
||
kiroy
1 — 04.07.07 — 20:28 |
из справки |
||
Барагозник
2 — 04.07.07 — 20:30 |
Попытка |
||
Барагозник
3 — 04.07.07 — 20:31 |
а вобще через функцию если можно разрулить |
||
kiroy
4 — 04.07.07 — 20:38 |
(0) УРА НАШЕЛ
ЕСЛИ(ЕОШИБКА(НАЙТИ(«12345»; «12346»))=ИСТИНА;999;111)
ЕСЛИ(ЕОШИБКА(НАЙТИ(«12345»; «123456»))=ИСТИНА;999;111) |
||
kiroy
5 — 04.07.07 — 20:38 |
+(4) может можно и проще |
||
kiroy
6 — 04.07.07 — 20:40 |
+(4) То бишь ЕСЛИ(ЕОШИБКА(НАЙТИ(Строка_Которую_Ищем; Строка_Где_Ищем))=ИСТИНА;»Не найдено вхождение»;НАЙТИ(Строка_Которую_Ищем; Строка_Где_Ищем)) |
||
Vovik 7 — 04.07.07 — 21:28 |
(6)Пасибо работает;) |
Прочитай, хотя бы, Митичкина «Разработка в системе 1С:Предприятие 8». Волшебник
Функция
НАЙТИ(
)
, английский вариант FIND(),
находит первое вхождение одной текстовой строки в другой строке и возвращают начальную позицию найденной строки.
Синтаксис функции
НАЙТИ
(
искомый_текст
;
просматриваемая_строка
;[нач_позиция])
Искомый_текст
— текст, который требуется найти.
Просматриваемая_строка
— текст, в которой ищется
Искомый_текст
.
Нач_позиция
— позиция знака в просматриваемой_строке, с которой должен начинаться поиск. Если аргумент
нач_позиция
опущен, то предполагается значение 1.
Если искомый_текст не найден, возвращается значение ошибки #ЗНАЧ!
Функция
НАЙТИ()
учитывает РЕгиСТР
букв, т.е. результат поиска в строке »
ПЕРВЫЙ первый
» будет разным для формул
=НАЙТИ(«ПЕРВЫЙ»;»ПЕРВЫЙ первый»)
и
=НАЙТИ(«первый»;»ПЕРВЫЙ первый»)
. Первая вернет 1, вторая 8.
Примеры
Формула
=НАЙТИ(«к»;»Первый канал»)
вернет 8, т.к. буква
к
находится на 8-й позиции слева. Формула
=НАЙТИ(«К»;»Первый канал»)
вернет значение ошибки #ЗНАЧ!, т.к. с учетом регистра строка
Первый канал
не содержит букву
К
.
Пусть в ячейке
А2
введена строка
Первый канал — лучший
. Формула
=НАЙТИ(СИМВОЛ(32);A2)
вернет 7, т.к. символ пробела (код 32) находится на 7-й позиции.
Чтобы найти позицию второго вхождения буквы «а» в строке «мама мыла раму» используйте формулу
=НАЙТИ(«а»;»мама мыла раму»;НАЙТИ(«а»;»мама мыла раму»)+1).
Чтобы определить есть ли третье вхождение буквы «м» в строке «мама мыла раму» используйте формулу
=ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама мыла раму»);»Нет третьего вхождения»;»Есть третье вхождение»)
.
Функция
НАЙТИ()
vs
ПОИСК()
Функция
НАЙТИ()
учитывает РЕгиСТР
букв и не допускает использование
подстановочных знаков
. Для поиска без учета регистра, а также для поиска с использованием
подстановочных знаков
пользуйтесь функцией
ПОИСК()
.
Связь с функциями
ЛЕВСИМВ()
,
ПРАВСИМВ()
и
ПСТР()
Функция
НАЙТИ()
может быть использована совместно с функциями
ЛЕВСИМВ()
,
ПРАВСИМВ()
и
ПСТР()
.
Например, в ячейке
А2
содержится фамилия и имя «Иванов Иван», то формула
=ЛЕВСИМВ(A2;НАЙТИ(СИМВОЛ(32);A2)-1)
извлечет фамилию, а
=ПРАВСИМВ(A2;ДЛСТР(A2)-НАЙТИ(СИМВОЛ(32);A2))
— имя. Если между именем и фамилией содержится более одного пробела, то для работоспособности вышеупомянутых формул используйте функцию
СЖПРОБЕЛЫ()
.
- Что делает функция ПОИСК?
- Синтаксис
- Форматирование
- Поиск символа в ячейке
- Извлечь первое слово
- Другие примеры использования
- Функция ПОИСК в формуле массива
Что делает функция ПОИСК?
Эта функция аналогична функции НАЙТИ и так же ищет подстроку в строке. Когда искомое найдено, отображается его позиция в тексте в виде числа.
Отличие от функции НАЙТИ в том, что ПОИСК не принимает в расчет регистр текста. Как искомого, так и того, в котором мы ищем. Также она поддерживает подстановочные операторы.
У обеих функций есть процедура-аналог Найти и Заменить – как у процедуры, у нее есть свои преимущества и недостатки.
Синтаксис
=ПОИСК(ИскомыйТекст;СтрокаВКоторойИщем;[СтартоваяПозиция])
- ИскомыйТекст — символ или сочетание, которое ищем
- СтрокаВКоторойИщем — ячейка, текстовое значение или любое возвращаемое другой функцией выражение.
- Стартовая позиция — опциональный параметр, при отсутствии поиск происходит с первого символа
Если текст содержит более одного вхождения, возвращается позиция первого.
Третий (опциональный) параметр используется для поиска с определенной позиции в тексте и по умолчанию равен 1.
Если искомое не найдено в тексте, функция возвращает ошибку #ЗНАЧ.
Форматирование
При поиске дат функция ПОИСК, как и все текстовые функции, воспринимает их как числа, поэтому для корректного поиска может понадобиться функция ТЕКСТ.
При этом логические значения ИСТИНА и ЛОЖЬ конвертируются в текст, соответствующий их написанию.
Поиск символа в ячейке
Наиболее простой пример использования функции – осуществление поиска определенного символа в ячейке.
Логика проста – если поиск позиции символа не возвращает ошибку, значит, символ в ячейке присутствует:
=НЕ(ЕОШ(ПОИСК(паттерн;текст)))
Извлечь первое слово
В этом простейшем примере извлекаем первое слово из ячейки с помощью комбинации — функция ЛЕВСИМВ + функция ПОИСК. Поскольку пробел — регистронезависимый символ, для этого случая можно использовать и функцию НАЙТИ.
Таблица выше была использована для извлечения имени из строки с именем и фамилией.
- ПОИСК возвращает позицию пробела между именем и фамилией.
- Длина имени вычисляется как позиция пробела минус 1.
- Функция ЛЕВСИМВ извлекает имя на основе его длины.
Другие примеры использования
Найти первую цифру в ячейке:
=МИН(ЕСЛИОШИБКА(ПОИСК({0:9:8:7:6:5:4:3:2:1};A1);1000))
Найти первую цифру в ячейке и вернуть все, что перед ней:
=ЛЕВСИМВ(A1,МИН(ЕСЛИОШИБКА(ПОИСК({0:9:8:7:6:5:4:3:2:1};A1);1000))-1)
Узнать, содержит ли ячейка латиницу. Формула вернет «ИСТИНА» или «ЛОЖЬ»:
=СЧЁТ(ПОИСК({"a":"b":"c":"d":"e":"f":"g":"h":"i":"j":"k":"l":"m":"n":"o":"p":"q":"r":"s":"t":"u":"v":"w":"x":"y":"z"};A1))>0
Найти кириллицу в тексте аналогичным путем:
=СЧЁТ(ПОИСК({"а":"б":"в":"г":"д":"е":"ё":"ж":"з":"и":"й":"к":"л":"м":"н":"о":"п":"р":"с":"т":"у":"ф":"х":"ц":"ч":"ш":"щ":"ъ":"ы":"ь":"э":"ю":"я"};A1))>0
Функция ПОИСК в формуле массива
Примеры выше, где буквы перечислены явно в строковом массиве, занимает довольно много места. Буквы при этом идут подряд, что наводит на мысль, что их можно как-то иначе выразить как диапазон.
И действительно, это возможно с помощью комбинации с функциями СТРОКА и ПОИСК:
{=СЧЁТ(ПОИСК(СИМВОЛ(СТРОКА(65:90));A1))>0}
Отличие этой формулы массива от предыдущих — ее нужно вводить без фигурных скобок, они появятся при вводе формулы сочетанием Ctrl+Shift+Enter (вместо обычного Enter). В формуле выше, где явно прописаны все буквы, фигурные скобки вводятся вручную — это явное указание строкового массива.
Что происходит в этой формуле?
- Функция СТРОКА с численным аргументом “65:90” возвращает массив чисел с 65 по 90 включительно. Как раз в этом диапазоне в таблице ASCII находятся все символы латиницы;
- Функция СИМВОЛ возвращает для каждого числового значения в этом массиве его символ, таким образом создавая массив латинских символов;
- Функция ПОИСК производит поиск каждого из этих символов в строке и возвращает либо число, либо ошибку, таким образом создавая массив чисел и ошибок
- Функция СЧЁТ считает числовые значения в полученном массиве. Если результат больше нуля, значит, хотя бы один символ латиницы был найден. Если нет (все поиски вернули ошибку), значит, не был
Аналогичная формула для кириллицы:
{=СЧЁТ(ПОИСК(СИМВОЛ(СТРОКА(192:223));A1))>0}
Подробнее о поиске и извлечении кириллицы и латиницы в Excel можно почитать тут:
Найти латиницу или кириллицу в тексте
Есть еще множество комбинаций функции ПОИСК с другими функциями Excel, смотрите разделы:
Функция ИЛИ
Функция И
Функция ЗНАЧЕН
Удалить первое слово в ячейке Excel
Смотрите также по теме:
ОБНАРУЖИТЬ (функционал надстройки !SEMTools)
Регулярные выражения в Excel
Найти определенные символы в Excel
Найти слова в ячейках
Найти числа в текстовых ячейках
Понравилась статья? Поддержите ее автора!
Набор инструментов !SEMTools поможет решить множество задач без ввода сложных формул и сэкономит ваше время. И вам полезно, и автору приятно!