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

Работа с текстовыми данными в Microsoft Excel часто требует проверки содержимого ячеек на соответствие определённым условиям. Например, вам может понадобиться выделить строки, где в колонке "Статус" указано "Отменено", или автоматически рассчитать бонус, если в ячейке с комментарием есть слово "премиум". В таких случаях стандартные формулы вроде =ЕСЛИ() работают иначе, чем с числами — здесь нужны специальные подходы.

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

1. Проверка на точное совпадение текста (простой вариант)

Самый базовый случай — когда нужно проверить, содержит ли ячейка в точности указанный текст. Например, если в колонке "Тип клиента" может быть только "Физ. лицо" или "Юр. лицо", и вам нужно разделить их по разным правилам.

Для этого используйте функцию =ЕСЛИ() с оператором равенства =. Синтаксис:

=ЕСЛИ(A1="нужный текст"; "значение_если_да"; "значение_если_нет")

Пример: если в ячейке A1 написано "Да", вывести "Подтверждено", иначе — "На проверке":

=ЕСЛИ(A1="Да"; "Подтверждено"; "На проверке")
  • 🔹 Плюсы: проще некуда, работает быстро даже на больших таблицах.
  • 🔸 Минусы: чувствителен к регистру ("да" ≠ "Да"), не находит частичные совпадения ("Отменено" ≠ "Отмена").
⚠️ Внимание: Если ячейка содержит пробелы до или после текста (например, " Да"), формула вернёт ЛОЖЬ. Используйте =СЖПРОБЕЛЫ(A1), чтобы очистить лишние символы: =ЕСЛИ(СЖПРОБЕЛЫ(A1)="Да"; ...).

2. Поиск подстроки в тексте (частичное совпадение)

Чаще всего требуется не точное совпадение, а проверка, содержится ли фрагмент текста внутри ячейки. Например, найти все заказы со словом "срочный" в комментарии или отфильтровать email-адреса с доменом @gmail.com.

Для этого используйте функции:

  • 🔍 =ПОИСК("искомая_подстрока"; A1) — ищет текст без учёта регистра (регистронезависимый поиск).
  • 🔎 =НАЙТИ("искомая_подстрока"; A1) — ищет текст с учётом регистра.

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

=ЕСЛИ(ЕЧИСЛО(ПОИСК("срочный"; A1)); "Приоритетный"; "Стандартный")

Пример для email:

=ЕСЛИ(ЕЧИСЛО(НАЙТИ("@gmail.com"; A1)); "Gmail"; "Другой почтовый сервис")
📊 Какой тип поиска вы используете чаще?
Точное совпадение
Частичное совпадение (ПОИСК)
С учётом регистра (НАЙТИ)
Не использую текстовые проверки
Функция Учитывает регистр? Пример результата Когда использовать
ПОИСК Нет ПОИСК("текст"; "ТЕКСТ") → 1 Поиск ключевых слов в отзывах, комментариях
НАЙТИ Да НАЙТИ("текст"; "ТЕКСТ") → #ЗНАЧ! Проверка паролей, кодов с фиксированным регистром
ЕЧИСЛО(ПОИСК(...)) Нет ЕЧИСЛО(ПОИСК("а"; "А")) → ИСТИНА Универсальный способ для условий ЕСЛИ

3. Проверка на наличие текста (любого)

Иногда нужно определить, пустая ли ячейка или содержит хоть какой-то текст. Например, чтобы выделить незаполненные поля в анкете или посчитать количество ячеек с комментариями.

Используйте функцию =ЕПУСТО() или проверку длины текста:

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

=ЕСЛИ(ДЛСТР(A1)>0; "Есть текст"; "Пусто")

Второй вариант надёжнее, так как ЕПУСТО возвращает ИСТИНА даже для ячеек с формулой, которая выдаёт пустую строку (например, ="").

1. Использовать ЕПУСТО() для простых случаев

2. Проверить ДЛСТР() для надёжности

3. Учесть формулы, которые могут возвращать пустоту

4. Комбинировать с СЖПРОБЕЛЫ(), если есть риск лишних пробелов-->

⚠️ Внимание: Если ячейка содержит формулу, которая возвращает пустую строку (например, =ЕСЛИ(ЛОЖЬ; ""; "текст")), ЕПУСТО вернёт ЛОЖЬ, а ДЛСТР — 0. Для таких случаев используйте =ЕСЛИ(А1=""; "Пусто"; "Есть текст").

4. Комбинация нескольких условий (И/ИЛИ)

Часто требуется проверять несколько текстовых условий одновременно. Например, выделить заказы, где статус "Оплачен" и способ доставки "Курьер", или где комментарий содержит "срочно" или "приоритет".

Для этого комбинируйте функции ЕСЛИ с И() или ИЛИ():

=ЕСЛИ(И(A1="Оплачен"; B1="Курьер"); "Приоритет"; "Стандарт")

=ЕСЛИ(ИЛИ(ЕЧИСЛО(ПОИСК("срочно"; C1)); ЕЧИСЛО(ПОИСК("приоритет"; C1))); "VIP"; "Обычный")

Можно проверять и более сложные комбинации, например:

=ЕСЛИ(И(ИЛИ(A1="Да"; A1="YES"); ДЛСТР(B1)>5); "Подходит"; "Не подходит")
  • 📌 Совет: Если условий много (больше 3–4), разбивайте формулу на части с промежуточными столбцами.
  • 🔧 Технический нюанс: И() и ИЛИ() в новых версиях Excel поддерживают до 255 аргументов, но для читаемости лучше ограничиться 5–6.

5. Проверка с учётом ошибок (#Н/Д, #ЗНАЧ!)

При работе с функциями ПОИСК/НАЙТИ часто возникают ошибки #ЗНАЧ!, если текст не найден. Чтобы формула не "ломалась", используйте =ЕОШИБКА() или =ЕСЛИОШИБКА().

Пример: проверить, есть ли в ячейке A1 слово "отмена", и если да — вывести "Отменён", если нет — "Активен", а если ошибка — "Неопределён":

=ЕСЛИОШИБКА(ЕСЛИ(ПОИСК("отмена"; A1); "Отменён"; "Активен"); "Неопределён")

Альтернативный вариант с вложенными условиями:

=ЕСЛИ(ЕОШИБКА(ПОИСК("отмена"; A1)); "Активен"; "Отменён")
Чем отличаются ЕОШИБКА и ЕСЛИОШИБКА?

ЕОШИБКА(выражение) возвращает ИСТИНА/ЛОЖЬ, если в выражении ошибка. Подходит для условий в ЕСЛИ. ЕСЛИОШИБКА(выражение; значение_при_ошибке) сразу подставляет альтернативное значение. Удобно для коротких формул, но менее гибко, чем ЕСЛИ + ЕОШИБКА.

6. Продвинутые методы: регулярные выражения и Power Query

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

  • 🔢 Функции Power Query: инструмент Get & Transform (вкладка Данные) позволяет применять текстовые фильтры с поддержкой регулярных выражений. Например, найти все ячейки, где текст начинается с цифры: ^[0-9].
  • 📝 Функции BAHTTEXT и REPT: для нестандартных манипуляций с текстом (например, повтор символов или преобразование чисел в текст с валютами).
  • 🤖 VBA-макросы: если нужно автоматизировать проверку тысяч строк по сложным правилам, напишите пользовательскую функцию на VBA.

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

  1. Выделите диапазон данных → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте столбец с условием: Добавить столбец → Пользовательский.
  3. Введите формулу: = if Text.Contains([YourColumn], "срочный") then "Да" else "Нет".

7. Примеры реальных задач с текстовыми проверками

Разберём 5 практических кейсов, где пригодятся текстовые проверки в Excel:

Задача Формула Пояснение
Выделить email с доменом @company.com =ЕСЛИ(ЕЧИСЛО(ПОИСК("@company.com"; A1)); "Корпоративный"; "Личный") Проверяет окончание адреса без учёта регистра.
Найти ячейки с упоминанием "COVID" или "пандемия" =ЕСЛИ(ИЛИ(ЕЧИСЛО(ПОИСК("COVID"; A1)); ЕЧИСЛО(ПОИСК("пандемия"; A1))); "Да"; "Нет") Использует ИЛИ для нескольких ключевых слов.
Проверить, начинается ли текст с "Арт." (артикул) =ЕСЛИ(ЛЕВСИМВ(A1;4)="Арт."; "Артикул"; "Другое") ЛЕВСИМВ извлекает первые 4 символа.
Определить язык текста (русский или английский) =ЕСЛИ(ЕЧИСЛО(НАЙТИ(ЛЕВСИМВ(A1); "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ")); "Русский"; "Английский") Проверяет первую букву на принадлежность кириллице.
Найти ячейки с телефонными номерами (формат +7XXX) =ЕСЛИ(И(ЛЕВСИМВ(A1;2)="+7"; ЕЧИСЛО(ПОСТР(A1;3;1))); "Телефон"; "Не телефон") Проверяет префикс +7 и что третий символ — цифра.

FAQ: Частые вопросы по текстовым проверкам в Excel

Как проверить, содержит ли ячейка любую из нескольких подстрок (например, "да"/"yes"/"ок")?

Используйте комбинацию ИЛИ с несколькими ПОИСК:

=ЕСЛИ(ИЛИ(ЕЧИСЛО(ПОИСК("да"; A1)); ЕЧИСЛО(ПОИСК("yes"; A1)); ЕЧИСЛО(ПОИСК("ок"; A1))); "Подтверждение"; "Отсутствует")

Для большого списка подстрок удобнее создать отдельную таблицу с вариантами и использовать СУММПРОИЗВ.

Почему формула =ЕСЛИ(A1="текст"; ...) не работает, если в ячейке точно есть этот текст?

Вероятные причины:

  1. Лишние пробелы: используйте СЖПРОБЕЛЫ(A1).
  2. Разный регистр: замените = на ПОИСК.
  3. Непечатаемые символы (переносы строк, табуляции): очистите данные функцией ПЕЧСИМВ.
Как посчитать количество ячеек, содержащих определённый текст?

Используйте СЧЁТЕСЛИ для точного совпадения или СУММПРОИЗВ для частичного:

// Точное совпадение

=СЧЁТЕСЛИ(A1:A100; "нужный текст")

// Частичное совпадение

=СУММПРОИЗВ(--(ЕЧИСЛО(ПОИСК("фрагмент"; A1:A100))))

Во втором случае не забудьте нажать Ctrl+Shift+Enter (формула массива).

Можно ли в Excel использовать регулярные выражения для поиска текста?

В стандартном Excel нет встроенной поддержки регулярок, но есть обходные пути:

  • 🔧 Power Query: поддерживает регулярные выражения в функциях Text.Select, Text.Replace.
  • 📜 VBA: напишите пользовательскую функцию с RegExp.
  • 🔗 Дополнения: установка надстроек вроде ABLEbits или Kutools.

Пример кода VBA для проверки регулярного выражения:

Function RegexMatch(input As String, pattern As String) As Boolean

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = pattern

RegexMatch = regex.Test(input)

End Function

Вызов в ячейке: =RegexMatch(A1; "^[A-Za-z]+$") (проверка на латиницу).

Как проверить, что ячейка содержит только текст без чисел?

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

=ЕСЛИ(СУММПРОИЗВ(--(ЕОШИБКА(НАЙТИ(ПСТР(A1;СТРОКА($1:$100);1); "0123456789"))))=ДЛСТР(A1); "Только текст"; "Есть цифры")

Формула проверяет каждый символ ячейки на принадлежность цифрам. Если ни одного совпадения нет — возвращает "Только текст".