«Если ячейка содержит» в Excel: все способы проверки текста, чисел и подстрок

Работа с условиями в Microsoft Excel — одна из самых востребованных задач. Чаще всего пользователям нужно проверить, содержит ли ячейка определенный текст, число или символ, чтобы затем применить форматирование, отфильтровать данные или выполнить вычисления. Например, вы можете искать все строки с упоминанием конкретного продукта в прайс-листе или выделять ячейки с ошибками в отчете.

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

Если вам нужно быстро найти решение для своей задачи — воспользуйтесь оглавлением. Если же вы хотите разобраться в теме глубже, читайте статью полностью: мы объяснили каждый метод с нюансами и типичными ошибками.

1. Функция ЕСЛИ + ПОИСК: базовый способ проверки текста

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

Формула выглядит так:

=ЕСЛИ(ЕЧИСЛО(ПОИСК("искомый_текст"; A1)); "Содержит"; "Не содержит")

Где:

  • 🔹 "искомый_текст" — то, что вы ищете (например, "урок" или "2026").
  • 🔹 A1 — ячейка, которую проверяем.
  • 🔹 ЕЧИСЛО — проверяет, вернула ли ПОИСК число (позицию подстроки).

Пример: В ячейке A1 текст "Отчет за март 2026". Формула =ЕСЛИ(ЕЧИСЛО(ПОИСК("март"; A1)); "Да"; "Нет") вернет "Да", потому что слово "март" есть в тексте.

⚠️ Внимание: Функция ПОИСК не учитывает регистр (т.е. "Март" и "март" для нее одинаковы). Если важен регистр, используйте НАЙТИ вместо ПОИСК — но она вернет ошибку, если текст не найден.

=ЕСЛИ(И(ЕЧИСЛО(ПОИСК("март"; A1)); ЕЧИСЛО(ПОИСК("2026"; A1))); "Да"; "Нет")
-->

2. Функция СЧЁТЕСЛИ для подсчета ячеек с текстом

Если вам нужно посчитать, сколько ячеек в диапазоне содержат определенный текст (а не просто проверить одну ячейку), используйте СЧЁТЕСЛИ. Эта функция возвращает количество ячеек, соответствующих критерию.

Синтаксис:

=СЧЁТЕСЛИ(диапазон; "искомый_текст")

Звездочки (*) здесь — подстановочные знаки, означающие "любой текст до/после искомой фразы".

Пример: Подсчитаем, сколько раз в столбце A1:A100 встречается слово "заказ":

=СЧЁТЕСЛИ(A1:A100; "заказ")

🔹 Нюансы:

  • 📌 Подстановочные знаки * и ? работают только с текстом. Для чисел используйте точные значения (например, =СЧЁТЕСЛИ(A1:A100; 2026)).
  • 📌 Если искать "" или "?" как символы, экранируйте их тильдой: "~".
  • 📌 СЧЁТЕСЛИ не учитывает регистр.
📊 Какой способ проверки ячеек вы используете чаще?
Функция ЕСЛИ+ПОИСК
СЧЁТЕСЛИ/СЧЁТЕСЛИМН
Условное форматирование
Фильтры
VBA/макросы

3. Условное форматирование для визуальной проверки

Когда нужно выделить ячейки, содержащие определенный текст, удобнее всего использовать условное форматирование. Этот метод не требует формул в отдельных столбцах и работает в реальном времени.

Пошаговая инструкция:

  1. Выделите диапазон ячеек (например, A1:A100).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите "Использовать формулу для определения форматируемых ячеек".
  4. Введите формулу:
    =ПОИСК("искомый_текст"; A1)

    (замените "искомый_текст" на ваш запрос).

  5. Задайте формат (например, красный фон) и нажмите ОК.

⚠️ Внимание: В формуле условного форматирования всегда используйте относительную ссылку на первую ячейку диапазона (например, A1, а не $A$1). Excel автоматически скорректирует адреса для остальных ячеек.

🔹 Продвинутый прием: Чтобы искать одно из нескольких слов, используйте функцию ИЛИ:

=ИЛИ(НЕОШИБКА(ПОИСК("слово1"; A1)); НЕОШИБКА(ПОИСК("слово2"; A1)))

Выделить диапазон|Открыть "Условное форматирование"|Выбрать "Использовать формулу"|Ввести формулу с ПОИСК или НАЙТИ|Задать стиль форматирования|Применить правило-->

4. Функции НАЙТИ vs ПОИСК: когда что использовать

Обе функции ищут подстроку в тексте, но у них есть ключевые различия:

Критерий НАЙТИ ПОИСК
Учет регистра ✅ Да ❌ Нет
Подстановочные знаки (*, ?) ❌ Нет ✅ Да
Ошибка при отсутствии текста #ЗНАЧ! #ЗНАЧ!
Работа с кириллицей/латиницей ✅ Корректно ✅ Корректно

Когда использовать НАЙТИ:

  • 🔍 Нужно различать "Excel" и "EXCEL".
  • 🔍 Ищете точные символы (например, "№" или "@").

Когда использовать ПОИСК:

  • 🔍 Регистр не важен (например, поиск фамилий независимо от написания).
  • 🔍 Нужны подстановочные знаки (например, искать все слова, начинающиеся на "про").

Важно: Если вы работаете с большими текстами (более 1000 символов), ПОИСК может работать быстрее, чем НАЙТИ, из-за оптимизации алгоритмов в Excel.

5. Проверка на ошибки и пустые ячейки

Частая проблема при проверке ячеек — ошибки (#Н/Д, #ЗНАЧ!) или пустые значения. Если не учесть их, формулы могут давать неверные результаты.

Способы обработки:

  1. Пропустить ошибки: Используйте ЕОШИБКА:
    =ЕСЛИ(И(НЕ(ЕПУСТО(A1)); НЕ(ЕОШИБКА(ПОИСК("текст"; A1)))); "Да"; "Нет")
  2. Игнорировать пустые ячейки: Добавьте ЕПУСТО:
    =ЕСЛИ(ЕПУСТО(A1); ""; ЕСЛИ(ЕЧИСЛО(ПОИСК("текст"; A1)); "Да"; "Нет"))
  3. Заменить ошибки на 0: Используйте ЕСЛИОШИБКА:
    =ЕСЛИ(ЕСЛИОШИБКА(ПОИСК("текст"; A1); 0)>0; "Да"; "Нет")

⚠️ Внимание: Функция ЕПУСТО считает пустой только ячейку совсем без данных. Если в ячейке формула, возвращающая пустую строку (""), ЕПУСТО вернет ЛОЖЬ. В таких случаях используйте =A1="".

Как проверить ячейку на любой тип ошибки?

Используйте функцию ЕОШИБКА без аргументов в массиве:

=ЕСЛИ(ЕОШИБКА(A1); "Ошибка"; "ОК")

Это вернет "Ошибка" для #Н/Д, #ДЕЛ/0!, #ЗНАЧ! и др.

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

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

Пример 1: Поиск по regex через VBA

Добавьте этот код в модуль Excel (нажмите Alt + F11Insert → Module):

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

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = pattern

regex.IgnoreCase = True ' Убрать, если важен регистр

RegexMatch = regex.Test(input.Value)

End Function

Теперь в Excel можно использовать:

=RegexMatch(A1; "^\d{3}-\d{2}$")

Эта формула вернет ИСТИНА, если в A1 текст в формате 123-45.

Пример 2: Поиск email-адресов

Шаблон для проверки email:

=RegexMatch(A1; "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")

🔹 Когда это нужно:

  • 🛠️ Проверка форматов (телефоны, даты, артикулы).
  • 🛠️ Извлечение подстрок по сложным правилам.
  • 🛠️ Замена текста с учетом контекста.

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

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

Ошибка 1: Лишние пробелы

Функции ПОИСК/НАЙТИ не игнорируют пробелы. Если в ячейке " текст " (с пробелами по краям), поиск по "текст" не сработает. Решение:

=ПОИСК("текст"; ПРОБЕЛЫ(A1))

Ошибка 2: Поиск чисел как текста

Если ищете число (например, 2026), но в ячейке оно хранится как текст, СЧЁТЕСЛИ может не найти его. Решение:

  • 📉 Преобразуйте данные в числа (ЗНАЧЕН).
  • 📉 Или ищите как текст: =СЧЁТЕСЛИ(A1:A100; "2026").

Ошибка 3: Кодировка символов

Иногда символы выглядят одинаково, но имеют разный код (например, тире и дефис -). Чтобы проверить точный символ, используйте функцию КОДСИМВ:

=ЕСЛИ(КОДСИМВ(ЛЕВСИМВ(A1))=45; "Дефис"; "Другой символ")

Ошибка 4: Диапазоны с объединенными ячейками

Формулы массива и СЧЁТЕСЛИ могут давать неверные результаты, если в диапазоне есть объединенные ячейки. Решение:

  • 🔧 Разъедините ячейки (Главная → Объединить и поместить в центре).
  • 🔧 Или используйте Power Query для предварительной обработки.

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

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

Используйте функцию ИЛИ с вложенными ПОИСК:

=ЕСЛИ(ИЛИ(ЕЧИСЛО(ПОИСК("слово1"; A1)); ЕЧИСЛО(ПОИСК("слово2"; A1))); "Да"; "Нет")

Для большого списка слов удобнее создать отдельный столбец с искомыми значениями и использовать СЧЁТЕСЛИ с подстановочными знаками.

Можно ли искать с учетом регистра без VBA?

Да, используйте НАЙТИ вместо ПОИСК, но учтите, что НАЙТИ не поддерживает подстановочные знаки. Альтернатива — функция ТОЧНО для проверки полного совпадения:

=ЕСЛИ(ТОЧНО(A1; "ТЕКСТ"); "Совпадает"; "Не совпадает")
Как выделить ячейки, которые НЕ содержат текст?

В условном форматировании используйте формулу:

=ЕОШИБКА(ПОИСК("искомый_текст"; A1))

Или для пустых ячеек:

=ИЛИ(ЕПУСТО(A1); A1="")
Почему СЧЁТЕСЛИ не находит число в ячейке?

Скорее всего, число хранится как текст. Проверьте формат ячейки (Главная → Формат → Формат ячеек) и при необходимости преобразуйте данные с помощью ЗНАЧЕН:

=ЗНАЧЕН(A1)

Или используйте СЧЁТЕСЛИМН с критерием как текстом:

=СЧЁТЕСЛИМН(A1:A100; ">0")
Как проверить ячейку на наличие любого символа из списка?

Для проверки на любой из символов (например, @, ., -) используйте массив с ИЛИ:

=ЕСЛИ(ИЛИ(НЕОШИБКА(НАЙТИ("@"; A1)); НЕОШИБКА(НАЙТИ("."; A1)); НЕОШИБКА(НАЙТИ("-"; A1))); "Есть"; "Нет")

Для Excel 365 можно использовать ПРОВЕРКАМН:

=ЕСЛИ(ИЛИ(ПРОВЕРКАМН(НЕОШИБКА(НАЙТИ({"@"; "."; "-"}; A1)))); "Есть"; "Нет")