
Раздел функций | Текстовые |
Название на английском | SEARCH |
Волатильность | Не волатильная |
Похожие функции | НАЙТИ (функция), поиск и замена (процедура) |
Что делает функция ПОИСК?
Эта функция аналогична функции НАЙТИ и так же ищет подстроку в строке. Когда искомое найдено, отображается его позиция в тексте в виде числа.
Отличие от функции НАЙТИ в том, что ПОИСК не принимает в расчет регистр текста. Как искомого, так и того, в котором мы ищем. Также она поддерживает подстановочные операторы.
У обеих функций есть процедура-аналог Найти и Заменить — как у процедуры, у нее есть свои преимущества и недостатки.
Синтаксис
=ПОИСК(ИскомыйТекст;СтрокаВКоторойИщем;[СтартоваяПозиция])
- ИскомыйТекст — символ или сочетание, которое ищем
- СтрокаВКоторойИщем — ячейка, текстовое значение или любое возвращаемое другой функцией выражение.
- Стартовая позиция — опциональный параметр, при отсутствии поиск происходит с первого символа
Если текст содержит более одного вхождения, возвращается позиция первого.
Третий (опциональный) параметр используется для поиска с определенной позиции в тексте и по умолчанию равен 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}
Отличие этой формулы массива от предыдущих — ее нужно вводить без фигурных скобок, они появятся при вводе формулы сочетанием
Что происходит в этой формуле?
- Функция СТРОКА с численным аргументом «65:90» возвращает массив чисел с 65 по 90 включительно. Как раз в этом диапазоне в таблице ASCII находятся все символы латиницы;
- Функция СИМВОЛ возвращает для каждого числового значения в этом массиве его символ, таким образом создавая массив латинских символов;
- Функция ПОИСК производит поиск каждого из этих символов в строке и возвращает либо число, либо ошибку, таким образом создавая массив чисел и ошибок
- Функция СЧЁТ считает числовые значения в полученном массиве. Если результат больше нуля, значит, хотя бы один символ латиницы был найден. Если нет (все поиски вернули ошибку), значит, не был
Аналогичная формула для кириллицы:
{=СЧЁТ(ПОИСК(СИМВОЛ(СТРОКА(192:223));A1))>0}
Подробнее о поиске и извлечении кириллицы и латиницы в Excel можно почитать тут:
Найти латиницу или кириллицу в тексте
Есть еще множество комбинаций функции ПОИСК с другими функциями Excel, смотрите разделы:
Функция ИЛИ
Функция И
Функция ЗНАЧЕН
Удалить первое слово в ячейке Excel
Смотрите также по теме:
ОБНАРУЖИТЬ (функционал надстройки !SEMTools)
Найти определенные символы в Excel
Найти числа в текстовых ячейках
Понравилась статья? Поддержите ее автора!
Набор инструментов !SEMTools поможет решить множество задач без ввода сложных формул и сэкономит ваше время. И вам полезно, и автору приятно!