Menu

НАЙТИ и ПОИСК в Excel (эксель): позиция текста в ячейке

=ПОИСК("apple";A2) возвращает позицию, с которой apple начинается в A2, без учёта регистра. НАЙТИ делает то же, но учитывает регистр. Обе возвращают #ЗНАЧ!, если текста нет, и ЕЧИСЛО превращает это в проверку «ячейка содержит».

Каждая таблица на этой странице живая: измените число или формулу, и она пересчитается.

=ПОИСК("apple";A2) возвращает позицию, с которой apple начинается в A2, считая от 1, и не различает прописные и строчные буквы. =НАЙТИ("apple";A2) делает то же, но находит только точное совпадение регистра. Это функции ПОИСК и НАЙТИ (по-английски SEARCH и FIND). Если текста нет, обе возвращают #ЗНАЧ! (по-английски #VALUE!); таблицы на этой странице показывают ошибки под английскими именами. Формулы в таблицах можно вводить и по-русски, с точкой с запятой, как выше.

НАЙТИ учитывает регистр, ПОИСК нет
B2
ABC
1TextFIND("apple")SEARCH("apple")
2Apple pie#VALUE!1
3Green apple77
4Banana bread#VALUE!#VALUE!
#VALUE! У аргумента неверный тип, например текст там, где нужно число.В русском Excel: =НАЙТИ("apple";A2)

Apple pie начинается с заглавной A, поэтому НАЙТИ не находит совпадения и возвращает #ЗНАЧ!, а ПОИСК возвращает 1. В Green apple обе возвращают 7: пробел считается символом. В Banana bread слова apple нет вообще.

Синтаксис

=FIND(find_text, within_text, [start_num])
=SEARCH(find_text, within_text, [start_num])
  • find_text (искомый_текст): что искать. Один символ или слово.
  • within_text (просматриваемый_текст): ячейка, в которой искать.
  • start_num (нач_позиция): позиция, с которой начинать, по умолчанию 1. Результат всё равно отсчитывается от первого символа ячейки.

Если ячейка содержит текст

Сама позиция нужна редко. Обычно вопрос звучит так: «есть ли в ячейке это слово?». Позиция это число, а промах это ошибка, поэтому ЕЧИСЛО превращает результат в ИСТИНА или ЛОЖЬ:

Упоминается ли в заметке задержка?
B2
ABC
1NoteContains "late"Status
2Arrived lateTRUECheck
3On timeFALSEOK
4LATE by 2 daysTRUECheck
5DeliveredFALSEOK
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ЕЧИСЛО(ПОИСК("late";A2))

ПОИСК находит LATE в A4, потому что не учитывает регистр. Учтите, что он нашёл бы и latest или chocolate: ПОИСК ищет символы, а не целые слова. Поиск " late" с пробелом впереди немного сужает результат. Чтобы посчитать, сколько ячеек содержат слово, короче написать =СЧЁТЕСЛИ(A2:A5;"*late*"); см. подсчёт ячеек с текстом.

Отметить срочные заявки
B2
AB
1SubjectUrgent?
2URGENT: server down
3Monthly report
4Refund request, urgent
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.

Ваша очередь: В B2 верните ИСТИНА, если тема в A2 содержит слово urgent в любом регистре, и ЛОЖЬ, если нет. Формула протягивается до B4.

Найти второе вхождение

start_num позволяет начать поиск после первого совпадения. Поставьте одну НАЙТИ внутрь другой: внутренняя находит первый дефис, а внешняя начинает на один символ позже.

Позиция первого и второго дефиса
C2
ABC
1CodeFirst dashSecond dash
2NYC-2041-B49
3BOSTON-15-AA710
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =НАЙТИ("-";A2;НАЙТИ("-";A2)+1)

Зная обе позиции, ПСТР может взять то, что стоит между дефисами: =ПСТР(A2;B2+1;C2-B2-1) возвращает 2041.

Где стоит @?
B2
AB
1EmailPosition
2ana@coddy.tech
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.

Ваша очередь: В B2 верните позицию знака @ в адресе почты.

НАЙТИ и ПОИСК возвращают #ЗНАЧ!

Здесь #ЗНАЧ! означает только «не найдено». Замените его чем-то полезным:

Не найдено, но без ошибки
B2
AB
1EmailPosition of @
2ana@coddy.tech4
3not an email0
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ЕСЛИОШИБКА(НАЙТИ("@";A2);0)

Не сравнивайте результат с числом напрямую, как в =НАЙТИ("@";A2)>0: промах это ошибка, и сравнение вернёт #ЗНАЧ!, а не ЛОЖЬ. Проверяйте его через ЕЧИСЛО, как в разделе выше.

Подстановочные знаки: только ПОИСК

ПОИСК принимает подстановочные знаки ? (любой один символ) и * (любая последовательность символов). НАЙТИ считает их обычными символами. В Excel:

=SEARCH("b?d","a bad day")     returns 3
=SEARCH("2*B","NYC-2041-B")    returns 5
=SEARCH("~?","Why?")           returns 4, the tilde means a real question mark
=FIND("?","Why?")              returns 4, FIND has no wildcards

В русском Excel первая формула записывается так: =ПОИСК("b?d";"a bad day"). Подробнее о *, ? и ~ в функциях Excel на странице о подстановочных знаках.

НАЙТИ, ПОИСК и Ctrl+F

НАЙТИПОИСКCtrl+F
РегистрДолжен совпадатьНе учитываетсяНе учитывается, если не отмечено «Учитывать регистр»
Подстановочные знакиНет?, *, ~?, *, ~
Не найдено#ЗНАЧ!#ЗНАЧ!Сообщение
РезультатПозиция, пересчитываетсяПозиция, пересчитываетсяВыделяет ячейку

Чтобы один раз найти значение, Главная > Найти и выделить > Найти (Ctrl+F, на Mac Cmd+F) быстрее формулы. Чтобы отмечать или извлекать данные в каждой строке и держать результат актуальным, используйте НАЙТИ или ПОИСК. Выбирайте НАЙТИ, когда регистр несёт смысл (коды товаров вроде ab и AB), и ПОИСК для всего, что набирают люди.

Часто задаваемые вопросы

Чем НАЙТИ отличается от ПОИСК в Excel?

НАЙТИ учитывает регистр и не принимает подстановочные знаки. ПОИСК не учитывает регистр и принимает ? и *. =НАЙТИ("a";"Apple") даёт #ЗНАЧ!, а =ПОИСК("a";"Apple") даёт 1.

Как извлечь текст между двумя дефисами в Excel?

Найдите оба дефиса и возьмите то, что между ними, функцией ПСТР: =ПСТР(A2;НАЙТИ("-";A2)+1;НАЙТИ("-";A2;НАЙТИ("-";A2)+1)-НАЙТИ("-";A2)-1) возвращает 2041 из NYC-2041-B. В Microsoft 365 короче: =ТЕКСТДО(ТЕКСТПОСЛЕ(A2;"-");"-").

Почему НАЙТИ возвращает #ЗНАЧ!?

Текста нет в ячейке или он записан с другими заглавными буквами (НАЙТИ учитывает регистр). Оберните формулу, чтобы вернуть другое значение: =ЕСЛИОШИБКА(НАЙТИ("-";A2);0).

Как найти второе вхождение символа?

Начните поиск на один символ позже первого совпадения: =НАЙТИ("-";A2;НАЙТИ("-";A2)+1). Третий аргумент это позиция, с которой начинается поиск.

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ