=ПОИСК("apple";A2) возвращает позицию, с которой apple начинается в A2, считая от 1, и не различает прописные и строчные буквы. =НАЙТИ("apple";A2) делает то же, но находит только точное совпадение регистра. Это функции ПОИСК и НАЙТИ (по-английски SEARCH и FIND). Если текста нет, обе возвращают #ЗНАЧ! (по-английски #VALUE!); таблицы на этой странице показывают ошибки под английскими именами. Формулы в таблицах можно вводить и по-русски, с точкой с запятой, как выше.
| A | B | C | |
|---|---|---|---|
| 1 | Text | FIND("apple") | SEARCH("apple") |
| 2 | Apple pie | #VALUE! | 1 |
| 3 | Green apple | 7 | 7 |
| 4 | Banana 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. Результат всё равно отсчитывается от первого символа ячейки.
Если ячейка содержит текст
Сама позиция нужна редко. Обычно вопрос звучит так: «есть ли в ячейке это слово?». Позиция это число, а промах это ошибка, поэтому ЕЧИСЛО превращает результат в ИСТИНА или ЛОЖЬ:
| A | B | C | |
|---|---|---|---|
| 1 | Note | Contains "late" | Status |
| 2 | Arrived late | TRUE | Check |
| 3 | On time | FALSE | OK |
| 4 | LATE by 2 days | TRUE | Check |
| 5 | Delivered | FALSE | OK |
=ЕЧИСЛО(ПОИСК("late";A2))ПОИСК находит LATE в A4, потому что не учитывает регистр. Учтите, что он нашёл бы и latest или chocolate: ПОИСК ищет символы, а не целые слова. Поиск " late" с пробелом впереди немного сужает результат. Чтобы посчитать, сколько ячеек содержат слово, короче написать =СЧЁТЕСЛИ(A2:A5;"*late*"); см. подсчёт ячеек с текстом.
| A | B | |
|---|---|---|
| 1 | Subject | Urgent? |
| 2 | URGENT: server down | |
| 3 | Monthly report | |
| 4 | Refund request, urgent |
Ваша очередь: В B2 верните ИСТИНА, если тема в A2 содержит слово urgent в любом регистре, и ЛОЖЬ, если нет. Формула протягивается до B4.
Найти второе вхождение
start_num позволяет начать поиск после первого совпадения. Поставьте одну НАЙТИ внутрь другой: внутренняя находит первый дефис, а внешняя начинает на один символ позже.
| A | B | C | |
|---|---|---|---|
| 1 | Code | First dash | Second dash |
| 2 | NYC-2041-B | 4 | 9 |
| 3 | BOSTON-15-AA | 7 | 10 |
=НАЙТИ("-";A2;НАЙТИ("-";A2)+1)Зная обе позиции, ПСТР может взять то, что стоит между дефисами: =ПСТР(A2;B2+1;C2-B2-1) возвращает 2041.
| A | B | |
|---|---|---|
| 1 | Position | |
| 2 | ana@coddy.tech |
Ваша очередь: В B2 верните позицию знака @ в адресе почты.
НАЙТИ и ПОИСК возвращают #ЗНАЧ!
Здесь #ЗНАЧ! означает только «не найдено». Замените его чем-то полезным:
| A | B | |
|---|---|---|
| 1 | Position of @ | |
| 2 | ana@coddy.tech | 4 |
| 3 | not an email | 0 |
=ЕСЛИОШИБКА(НАЙТИ("@";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). Третий аргумент это позиция, с которой начинается поиск.