Как в Excel сделать условие «ЕСЛИ содержит»: от простых формул до регулярных выражений

Вы когда-нибудь пытались автоматизировать сортировку данных в Microsoft Excel, но стандартные фильтры не справлялись с задачей? Например, нужно было выделить все ячейки, где упоминается слово «срочно», или найти строки с определённым артикулом в длинном списке товаров. В таких случаях на помощь приходит условие «ЕСЛИ содержит»** — один из самых востребованных инструментов для работы с текстовыми данными.

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

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

1. Базовый способ: функция ЕСЛИ + ПОИСК или НАЙТИ

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

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

Как это работает:

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

Пример: вам нужно пометить все заказы с пометкой «VIP» в колонке B. Формула будет такой:

=ЕСЛИ(ЕЧИСЛО(ПОИСК("VIP"; B2));"Приоритетный";"Стандартный")
⚠️ Внимание: Функция ПОИСК не учитывает регистр символов. Если вам важно различать «VIP» и «vip», используйте НАЙТИ или дополнительные проверки с СИМВОЛ и КОДСИМВ.

2. Проверка нескольких условий: ЕСЛИ + И + ПОИСК

Что делать, если нужно проверить наличие нескольких подстрок одновременно? Например, выделить строки, где есть и «срочно», и «оплата»? Здесь поможет комбинация с функцией И:

=ЕСЛИ(И(ЕЧИСЛО(ПОИСК("срочно"; A1)); ЕЧИСЛО(ПОИСК("оплата"; A1)));"Важно!";"")

А если достаточно хотя бы одного совпадения из списка (например, «VIP» или «Premium»), используйте ИЛИ:

=ЕСЛИ(ИЛИ(ЕЧИСЛО(ПОИСК("VIP"; A1)); ЕЧИСЛО(ПОИСК("Premium"; A1)));"Привилегированный";"Обычный")

Нюансы:

  • 📝 Формула становится громоздкой, если условий больше 3–4. В таких случаях лучше использовать ПОИСКПОЗ с массивом (разберём ниже).
  • ⚡ Для ускорения работы с большими таблицами фиксируйте диапазоны абсолютными ссылками (например, $A$1:$A$100).
📊 Какой тип проверки вам нужнее?
Одно условие (например,"содержит VIP")
Несколько условий одновременно (И)
Хотя бы одно из условий (ИЛИ)
Не знаю, ещё не пробовал

3. Продвинутый поиск: ПОИСКПОЗ для работы с массивами

Если вам нужно проверить наличие одной из множества подстрок (например, список городов или артикулов), функция ПОИСКПОЗ (MATCH) сможет обработать их все за один проход. Это особенно полезно, когда вариантов для поиска десятки.

Пример: Предположим, у вас в колонке A перечень товаров, а в диапазоне D1:D10 — список ключевых слов (например, «акция», «хит», «новинка»). Формула вернёт «Да», если хоть одно из слов найдено:

=ЕСЛИ(МИН(ЕСЛИОШИБКА(ПОИСК($D$1:$D$10; A1); 100))<100;"Да";"Нет")

Важно: Эта формула должна вводиться как массивная (в старых версиях Excel — нажать Ctrl+Shift+Enter, в новых — работает автоматически).

Функция Преимущества Недостатки
ЕСЛИ+ПОИСК Простота, работает во всех версиях Excel Громоздкость при множестве условий
ПОИСКПОЗ Обрабатывает списки ключевых слов Требует знания массивов
ФИЛЬТР (Excel 365) Динамический результат, не требует формул Доступен только в новых версиях
Почему формула возвращает #ЗНАЧ!?

Ошибка #ЗНАЧ! обычно возникает, если:

1. В функции ПОИСК не найдена подстрока, а вы не использовали ЕЧИСЛО или ЕСЛИОШИБКА.

2. В массиве для ПОИСКПОЗ есть пустые ячейки.

3. Аргументы функции переданы неверно (например, текст вместо числа).

4. Условное форматирование: визуальная проверка «содержит»

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

Как настроить:

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

Теперь все ячейки с искомой подстрокой будут подсвечены. Преимущество: правила работают в реальном времени и не зависят от пересчёта формул.

Диапазон выделен правильно (без заголовков)

Формула ссылается на первую ячейку диапазона (например, A1, а не A:A)

Искомая подстрока введена без опечаток

Указан корректный цвет (не сливается с фоном)

-->

⚠️ Внимание: Условное форматирование с формулами ПОИСК/НАЙТИ может замедлять работу книги, если применяется к десяткам тысяч ячеек. В таких случаях лучше использовать Power Query или VBA.

5. Регулярные выражения в Excel: поиск по шаблону

Мало кто знает, но в Excel можно использовать регулярные выражения (regex) для гибкого поиска по шаблону. Например, найти все email-адреса, номера телефонов или строки с определённой структурой. Для этого понадобится:

  • 📌 Power Query (в Excel 2016+) — встроенный инструмент для преобразования данных.
  • 📌 VBA — для создания пользовательских функций (если нужно работать в ячейках).

Пример через Power Query:

  1. Выделите данные и нажмите Данные → Из таблицы/диапазона (или Data → From Table/Range).
  2. В редакторе Power Query добавьте столбец с формулой:
    = Table.AddColumn(#"Предыдущий шаг","Содержит email", each Text.Contains([Ваша_колонка],"@"))
  3. Для сложных шаблонов используйте Text.MatchRegex (требуется подключить расширение Regex).

Если вам нужна формула прямо в ячейке, создайте пользовательскую функцию VBA:

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

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = pattern

RegexMatch = regex.Test(inputText)

End Function

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

=RegexMatch(A1;"срочн.*")

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

Даже опытные пользователи Excel сталкиваются с проблемами при работе с условием «ЕСЛИ содержит». Вот TOP-5 ошибок и их решения:

  1. Ошибка #ЗНАЧ! при использовании ПОИСК

    Причина: Подстрока не найдена, а вы не обработали ошибку. Решение: Оберните ПОИСК в ЕЧИСЛО или ЕСЛИОШИБКА.

  2. Формула не находит текст, хотя он есть

    Причина: Лишние пробелы в начале/конце ячейки. Решение: Используйте СЖПРОБЕЛЫ(A1) перед проверкой.

  3. Медленная работа таблицы

    Причина: Слишком много вложенных ЕСЛИ или массивов. Решение: Разбейте задачу на несколько столбцов или используйте Power Query.

  4. Не учитывается регистр

    Причина: ПОИСК регистронезависимый. Решение: Замените на НАЙТИ или добавьте проверку СИМВОЛ.

  5. Формула не копируется правильно

    Причина: Не зафиксированы абсолютные ссылки. Решение: Используйте $A$1 для фиксированных диапазонов.

Если ваша формула всё равно не работает, проверьте:

  • 🔄 Формат ячеек: иногда текст хранится как число или дата.
  • 📏 Длину строки: Excel обрезает текст длиннее 32767 символов.
  • 🌍 Языковые настройки: в некоторых локалях разделителем является ;, а не ,.

FAQ: Частые вопросы по условию «ЕСЛИ содержит»

Можно ли искать часть слова? Например, найти все ячейки, где есть «авто», включая «автомобиль» и «автобус»?

Да, функция ПОИСК("авто"; A1) найдёт все вхождения подстроки «авто» в любом месте слова. Если нужно искать только целое слово, используйте регулярные выражения с границами слов: \bавто\bPower Query или VBA).

Как сделать поиск по нескольким листам или книгам?

Для поиска по нескольким листам используйте трёхмерные ссылки (например, =ПОИСК("текст"; Лист1:Лист3!A1)). Для разных книг потребуется VBA или Power Query, так как стандартные формулы не работают между файлами.

Почему моя формула работает в Excel, но не работает в Google Sheets?

В Google Sheets функция ПОИСК называется SEARCH, а НАЙТИFIND. Также там нет функции ЕЧИСЛО — используйте ISNUMBER. Пример:

=IF(ISNUMBER(SEARCH("text"; A1));"Yes";"No")

Можно ли искать по шаблону, например, все строки, где есть число от 100 до 200?

Да, для этого подойдут:

  • 🔢 Регулярные выражения (шаблон [1-2][0-9]{2} для чисел 100–299).
  • 📊 Функции проверки диапазона:
    =ЕСЛИ(И(ЧИСЛОВ(A1); A1>=100; A1<=200);"Подходит";"")
Как сделать так, чтобы формула игнорировала ошибки в ячейках?

Оберните проверку в ЕСЛИОШИБКА:

=ЕСЛИ(ЕСЛИОШИБКА(ПОИСК("текст"; A1); 0)>0;"Есть";"Нет")

Или используйте ЕПУСТО для проверки пустых ячеек:

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