Как в Excel написать формулу, если ячейка содержит текст: 7 рабочих способов

Вы когда-нибудь сталкивались с задачей, когда нужно автоматически обработать данные в Excel, если ячейка содержит определенный текст? Например, отметить строки с ключевыми словами, разделить клиентов по категориям или найти ошибки в больших таблицах? Это одна из самых востребованных операций при работе с данными — и без знания специальных формул на нее уходит масса времени.

В этой статье мы разберем 7 проверенных способов написать формулу в Excel, которая будет проверять содержимое ячеек на соответствие заданным условиям. Вы узнаете, как использовать функции ЕСЛИ, ПОИСК, НАЙТИ, ЕЧИСЛО и другие — от простых проверок до сложных логических конструкций с несколькими критериями. Все примеры приведены с пояснениями и готовыми шаблонами для копирования.

Особое внимание уделим типичным ошибкам, которые допускают даже опытные пользователи, и покажем, как их избежать. Например, почему формула =ЕСЛИ(ПОИСК("текст";A1);"Да";"Нет") иногда возвращает ошибку #ЗНАЧ!, хотя текст в ячейке точно есть. Или как правильно искать подстроки с учетом регистра. Эти нюансы сэкономят вам часы отладки таблиц.

1. Базовая проверка с функцией ЕСЛИ + точное совпадение

Начнем с самого простого варианта — проверки на полное совпадение содержимого ячейки. Здесь нам понадобится только функция ЕСЛИ (или IF в английской версии). Эта формула работает как условный оператор: если условие истинно — выполняется одно действие, если ложно — другое.

Допустим, у вас в столбце A перечислены статусы заказов ("Оплачен", "Отменен", "В обработке"), и вам нужно в столбце B автоматически проставлять "Да" для всех оплаченных заказов. Формула будет такой:

=ЕСЛИ(A1="Оплачен"; "Да"; "Нет")

Разберем синтаксис: =ЕСЛИ(логическое_выражение; значение_если_истина; значение_если_ложь)

  • 🔹 Логическое_выражение — это условие, которое проверяется (в нашем случае A1="Оплачен").
  • 🔹 Значение_если_истина — то, что будет выведено, если условие выполнено ("Да").
  • 🔹 Значение_если_ложь — альтернативный вывод ("Нет").
⚠️ Внимание: Функция ЕСЛИ чувствительна к регистру! Если в ячейке написано "оплачен" (с маленькой буквы), а вы ищете "Оплачен" — формула вернет "Нет". Чтобы избежать этого, используйте функцию СЖПРОБЕЛЫ(ПРОПИСН(A1))="ОПЛАЧЕН" для приведения текста к единому регистру.

2. Поиск подстроки: функции ПОИСК и НАЙТИ

Чаще всего требуется не точное совпадение, а проверка, содержит ли ячейка определенный текст. Например, найти все email-адреса с доменом @gmail.com или выделить строки, где упоминается конкретный продукт. Для этого используются функции ПОИСК (SEARCH) и НАЙТИ (FIND).

Основное отличие: ПОИСК игнорирует регистр (например, найдет и "Excel", и "EXCEL"), а НАЙТИ учитывает регистр символов. Также ПОИСК позволяет использовать подстановочные знаки (*, ?), а НАЙТИ — нет.

Пример формулы, которая проверяет, содержится ли слово "урок" в ячейке A1 (регистр не важен):

=ЕСЛИ(ЕЧИСЛО(ПОИСК("урок";A1)); "Есть"; "Нет")

Почему здесь нужна функция ЕЧИСЛО? Потому что ПОИСК возвращает позицию найденного текста (число) или ошибку #ЗНАЧ!, если текст не найден. ЕЧИСЛО проверяет, является ли результат числом — если да, значит подстрока найдена.

📊 Какой функцией вы чаще пользуетесь для поиска текста?
ПОИСК (игнорирует регистр)
НАЙТИ (учитывает регистр)
ЕЩЁ не использовал ни одну
Другая функция
Функция Синтаксис Пример использования Учитывает регистр?
ПОИСК ПОИСК(искомый_текст; текст_для_поиска; [нач_позиция]) =ПОИСК("@";A1) (найдет позицию символа @) Нет
НАЙТИ НАЙТИ(искомый_текст; текст_для_поиска; [нач_позиция]) =НАЙТИ("Excel";A1) (не найдет "EXCEL") Да
ЕЧИСЛО ЕЧИСЛО(значение) =ЕЧИСЛО(ПОИСК("error";A1)) (проверка на ошибку)

3. Проверка на наличие одного из нескольких слов

Допустим, вам нужно проверить, содержит ли ячейка любое из нескольких слов. Например, выделить строки, где упоминаются "отчет", "аналитика" или "статистика". Для этого можно использовать комбинацию функций ЕСЛИ + ИЛИ + ПОИСК.

Формула будет выглядеть так:

=ЕСЛИ(

ИЛИ(

ЕЧИСЛО(ПОИСК("отчет";A1)),

ЕЧИСЛО(ПОИСК("аналитика";A1)),

ЕЧИСЛО(ПОИСК("статистика";A1))

);

"Релевантно";

"Не релевантно"

)

Если хотя бы одно из слов найдено — формула вернет "Релевантно". Для большего количества слов просто добавьте новые условия в функцию ИЛИ.

Для обратной задачи — когда нужно проверить, что ячейка НЕ содержит определенные слова — используйте функцию И вместо ИЛИ:

=ЕСЛИ(

И(

НЕ(ЕЧИСЛО(ПОИСК("спам";A1))),

НЕ(ЕЧИСЛО(ПОИСК("реклама";A1)))

);

"Чистый текст";

"Содержит запрещенные слова"

)

4. Проверка начала или конца текста

Иногда требуется проверить не любое вхождение подстроки, а именно начало или конец текста в ячейке. Например, найти все email-адреса, которые заканчиваются на @company.ru, или коды товаров, начинающиеся с префикса "ART-".

Для этого используйте комбинацию функций ЛЕВСИМВ (LEFT) и ПРАВСИМВ (RIGHT) с ЕСЛИ:

  • 🔹 Проверка начала текста (первые 4 символа равны "ART-"):
=ЕСЛИ(ЛЕВСИМВ(A1;4)="ART-"; "Артикул"; "Другой код")
  • 🔹 Проверка конца текста (последние 11 символов равны "@company.ru"):
=ЕСЛИ(ПРАВСИМВ(A1;11)="@company.ru"; "Корпоративный email"; "Личный email")

Если длина проверяемой подстроки переменная (например, домен может быть разной длины), используйте функцию ПСТР (MID) с расчетом позиции:

=ЕСЛИ(ПРАВСИМВ(A1;ДЛСТР("@company.ru"))="@company.ru"; "Да"; "Нет")

5. Проверка с подстановочными знаками (* и ?)

Функция ПОИСК поддерживает подстановочные знаки: * (любое количество символов) и ? (один символ). Это полезно, когда нужно найти текст по шаблону. Например, все слова, начинающиеся на "Приказ №" или содержащие дату в формате ДД.ММ.ГГГГ.

Примеры использования:

  • 🔹 Найти ячейки, содержащие текст, который начинается на "Отчет" и заканчивается на "2026":
=ЕСЛИ(ЕЧИСЛО(ПОИСК("Отчет*2026";A1)); "Да"; "Нет")
  • 🔹 Проверить, что в ячейке ровно 10 символов, причем 3-й и 4-й — это "КТ":
=ЕСЛИ(И(ДЛСТР(A1)=10; ЕЧИСЛО(ПОИСК("??КТ??????";A1))); "Соответствует"; "Не соответствует")

Также они не работают с функцией СЖПРОБЕЛЫ — сначала нужно привести текст к единому формату.

Как искать точку с запятой в тексте?

Если вам нужно найти в тексте символы ; или , которые совпадают с подстановочными знаками, используйте функцию НАЙТИ или экранируйте символ тильдой: =ПОИСК("~;";A1).

6. Продвинутые методы: регулярные выражения и пользовательские функции

Для сложных проверок (например, поиск email-адресов по шаблону или валидация номеров телефонов) стандартных функций Excel может не хватить. В этом случае используйте:

  1. 🔢 Пользовательские функции на VBA — позволяют создавать собственные формулы с поддержкой регулярных выражений. Например, функция =REGEX_MATCH(A1; "\b\d{3}-\d{2}-\d{2}\b") найдет все номера паспортов в формате XXX-XX-XX.
  2. 🔢 Power Query — инструмент для преобразования данных, где можно применять фильтры с регулярными выражениями.
  3. 🔢 Функцию ФИЛЬТР (в Excel 365) — для динамической фильтрации данных по текстовому критерию.

Пример пользовательской функции на VBA для проверки email:

Function IS_EMAIL(rng As Range) As Boolean

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"

IS_EMAIL = regex.Test(rng.Value)

End Function

После добавления этого кода в редактор VBA (Alt + F11) вы сможете использовать формулу =IS_EMAIL(A1), которая вернет ИСТИНА или ЛОЖЬ.

⚠️ Внимание: Пользовательские функции VBA работают только в классических версиях Excel (не в Excel Online). Также они могут блокироваться настройками безопасности — перед использованием проверьте разрешения для макросов в Файл → Параметры → Центр управления безопасностью.

Убедитесь, что вкладка "Разработчик" отображена в ленте (включается в Параметрах Excel)|Сохраните файл в формате.xlsm (с поддержкой макросов)|Проверьте настройки безопасности для макросов|Сделайте резервную копию данных перед тестированием-->

7. Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с неожиданными ошибками при работе с текстовыми формулами. Вот самые распространенные проблемы и их решения:

Ошибка Причина Как исправить
#ЗНАЧ! в формуле с ПОИСК Искомый текст не найден, а функция ЕЧИСЛО не используется Оберните ПОИСК в ЕЧИСЛО: =ЕСЛИ(ЕЧИСЛО(ПОИСК(..));
Формула не находит текст, хотя он есть Лишние пробелы в начале/конце ячейки Используйте СЖПРОБЕЛЫ(A1) для очистки текста
#ИМЯ? при копировании формулы Относительные ссылки некорректно изменились Закрепите ссылки знаком $ (например, $A$1)
Формула игнорирует регистр, когда это важно Используется ПОИСК вместо НАЙТИ Замените ПОИСК на НАЙТИ для чувствительности к регистру

Критическая ошибка: если вы используете функцию ПОИСК для проверки пустых ячеек, она всегда будет возвращать ошибку #ЗНАЧ!, даже если ячейка пустая. Чтобы избежать этого, сначала проверяйте ячейку на пустоту функцией ЕПУСТО:

=ЕСЛИ(ЕПУСТО(A1); "Пусто"; ЕСЛИ(ЕЧИСЛО(ПОИСК("текст";A1)); "Есть"; "Нет"))

FAQ: Ответы на частые вопросы

Можно ли в одной формуле проверить несколько условий для текста?

Да, для этого используйте функции И (все условия должны выполняться) или ИЛИ (достаточно одного условия). Пример:

=ЕСЛИ(И(ЕЧИСЛО(ПОИСК("урок";A1)); ЕЧИСЛО(ПОИСК("2026";A1))); "Актуально"; "Устарело")

Эта формула вернет "Актуально", только если в ячейке есть и слово "урок", и "2026".

Как найти ячейки, которые содержат ТОЛЬКО определенный текст (без других символов)?

Используйте комбинацию ЕСЛИ + СЖПРОБЕЛЫ + = для точного совпадения:

=ЕСЛИ(СЖПРОБЕЛЫ(A1)="точный текст"; "Совпадает"; "Не совпадает")

Функция СЖПРОБЕЛЫ удаляет лишние пробелы, чтобы избежать ложных несовпадений.

Почему формула с ПОИСК работает медленно на больших таблицах?

Функции ПОИСК/НАЙТИ ресурсоемкие, особенно при проверке длинных текстов. Оптимизируйте работу:

  • 🔹 Используйте ПОИСКБ для байтовой проверки (быстрее для латиницы).
  • 🔹 Ограничьте диапазон применения формулы (например, только к заполненным строкам).
  • 🔹 Для статических данных преобразуйте формулы в значения (Копировать → Специальная вставка → Значения).
Как проверить, что ячейка содержит хотя бы одну цифру?

Используйте формулу с проверкой каждого символа:

=ЕСЛИ(СУММПРОИЗВ(--(ЕЧИСЛО(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1))))>0; "Есть цифры"; "Нет цифр")

Эта формула проверяет наличие любой цифры от 0 до 9 в тексте.

Можно ли использовать эти формулы в Google Sheets?

Да, все описанные функции работают и в Google Sheets, за исключением пользовательских VBA-функций. Вместо них в Google Sheets можно использовать встроенную функцию =REGEXMATCH для регулярных выражений:

=IF(REGEXMATCH(A1; "отчет|аналитика"); "Релевантно"; "Не релевантно")