Как в Excel обозначить «содержит»: от простых фильтров до сложных формул

Почему поиск по частичному совпадению важен в Excel

Работа с большими таблицами в Microsoft Excel часто требует не точного поиска, а проверки на частичное совпадение. Например, вам нужно найти все email-адреса с доменом @gmail.com, выделить строки с упоминанием конкретного продукта или отфильтровать записи, где номер телефона начинается с +7. Вручную просматривать тысячи строк — неэффективно, поэтому Excel предлагает несколько инструментов для автоматизации этой задачи.

Основная проблема начинающих пользователей — незнание разницы между точным совпадением (когда ячейка равна искомому значению) и частичным (когда ячейка содержит фрагмент текста). Например, формула =ЕСЛИ(A1="яблоко"; "Да"; "Нет") сработает только для ячейки с точным словом «яблоко», но пропустит «красное яблоко» или «яблоко зеленое». Для таких случаев нужны специальные функции и операторы.

Способ 1: Функция ПОИСК (SEARCH) для проверки содержимого

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

Синтаксис:

=ПОИСК(искомый_текст; текст_для_поиска; [нач_позиция])

Примеры применения:

  • 🔍 Проверка наличия слова: =ЕСЛИ(ЕЧИСЛО(ПОИСК("урок"; A1)); "Есть"; "Нет") — вернет «Есть», если в ячейке A1 есть слово «урок».
  • 📧 Фильтрация email: =ЕСЛИ(ЕЧИСЛО(ПОИСК("@gmail.com"; B2)); "Gmail"; "Другой").
  • 📞 Поиск кода страны: =ЕСЛИ(ПОИСК("+7"; C3)=1; "Россия"; "Иностранный") — проверяет, начинается ли номер с +7.
⚠️ Внимание: Функция ПОИСК не учитывает регистр. Если важен регистр (например, различать «Excel» и «excel»), используйте НАЙТИ (FIND).

Способ 2: Операторы подстановки * и ? в фильтрах

Excel поддерживает два символа подстановки для частичного поиска:

  • * — заменяет любое количество символов (включая ноль). Например, ов найдет «Иванов», «Петров», «овца».
  • ? — заменяет ровно один символ. Например, с?т найдет «кот», «сот», но не «слот» или «салат».

Где их применять:

  • 🔎 Фильтр данных: В меню Данные → Фильтр выберите «Текстовые фильтры → Содержит» и введите шаблон, например *@mail.ru.
  • 📊 Условное форматирование: Создайте правило с формулой =НЕ(ЕЧИСЛО(ПОИСК("текст"; A1))).
  • 🔍 Поиск по таблице: Нажмите Ctrl+F, в поле ввода используйте часть_слова.

Задача Шаблон Пример результата
Найти все email с доменом @yandex.ru *@yandex.ru user@yandex.ru, test.mail@yandex.ru
Найти слова из 5 букв, где 3-я буква «а» ??а?? «банан», «карандаш» (не подойдет), «пакет»
Найти номера телефонов с кодом +7 (9 +7 (9* +7 (912) 123-45-67
📊 Какой способ поиска вы используете чаще?
Функции ПОИСК/НАЙТИ
Символы подстановки * и ?
Фильтры данных
Условное форматирование

Способ 3: Условное форматирование для визуального выделения

Если нужно автоматически выделять ячейки, содержащие определенный текст, используйте условное форматирование. Например, чтобы пометить все строки с упоминанием «срочно» красным цветом:

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

Для поиска по нескольким критериям комбинируйте функции с ИЛИ:

=ИЛИ(

НЕ(ЕЧИСЛО(ПОИСК("срочно"; A1)));

НЕ(ЕЧИСЛО(ПОИСК("важно"; A1)))

)

Выделить диапазон ячеек|Открыть меню "Условное форматирование"|Выбрать "Создать правило"|Ввести формулу с функцией ПОИСК|Задать стиль форматирования (цвет, шрифт)|Сохранить правило-->

⚠️ Внимание: Формулы в условном форматировании должны возвращать ИСТИНА/ЛОЖЬ. Если используете ПОИСК, оберните его в ЕЧИСЛО или сравнение с числом (например, =ПОИСК("текст";A1)>0).

Способ 4: Функция РАЗБИТЬ (TEXTSPLIT) для анализа частей текста

В Excel 365 и Excel 2021 появилась функция РАЗБИТЬ (TEXTSPLIT), которая делит текст по разделителю. Это полезно, если нужно проверить содержимое части строки. Например, в ячейке хранится ФИО «Иванов Петр Сидорович», и вам нужно найти всех с отчеством «Сидорович».

Пример формулы:

=ЕСЛИ(

РАЗБИТЬ(A1; " ")[3]="Сидорович";

"Есть отчество";

"Нет"

)

Где применять:

  • 📄 Разбор составных данных: Например, в ячейке «Москва, ул. Ленина, д.5» найти все адреса с улицей «Ленина».
  • 📅 Анализ дат: В тексте «Заказ от 15.05.2023» извлечь только дату.
  • 🔢 Коды номенклатуры: В артикуле «ABC-123-XYZ» проверить часть 123.

Как работать с РАЗБИТЬ в старых версиях Excel?

В Excel 2019 и ранее используйте комбинацию функций ПСТР, ПОИСК и ДЛСТР. Например, чтобы извлечь отчество из ФИО:

=ПСТР(A1; ПОИСК(" "; A1; ПОИСК(" "; A1)+1)+1; ДЛСТР(A1))

Эта формула ищет второе пробела и извлекает текст после него.

Способ 5: Power Query для сложного поиска по содержимому

Если вам нужно обработать тысячи строк с частичными совпадениями, стандартные функции Excel могут работать медленно. В этом случае поможет инструмент Power Query (доступен в Excel 2016+). Он позволяет:

  • 🔍 Фильтровать строки по фрагменту текста (аналог Содержит в SQL).
  • 📊 Разбивать столбцы на части по разделителям.
  • 🔄 Объединять данные из нескольких источников с проверкой на совпадения.

Пример: как отфильтровать строки, где в столбце «Описание» есть слово «отчет»:

  1. Выделите таблицу и нажмите Данные → Из таблицы/диапазона (или Get Data → From Table/Range).
  2. В редакторе Power Query выберите столбец «Описание», нажмите на стрелку фильтра и выберите «Текстовые фильтры → Содержит».
  3. Введите «отчет» и нажмите «ОК».
  4. Нажмите Главная → Закрыть и загрузить.

Power Query обрабатывает данные в фоновом режиме и не тормозит Excel при работе с миллионами строк.

Способ 6: Регулярные выражения (Regex) через VBA

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

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

Sub FindEmails()

Dim rng As Range, cell As Range

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"

regex.Global = True

For Each cell In Selection

If regex.Test(cell.Value) Then

cell.Interior.Color = RGB(255, 255, 0) ' Желтый фон

End If

Next cell

End Sub

Как использовать:

  • Нажмите Alt+F11, чтобы открыть редактор VBA.
  • Вставьте код в новый модуль (Insert → Module).
  • Выделите диапазон в Excel и запустите макрос (F5).

⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. Если ваш файл в формате .xlsx, сохраните его как Excel Macro-Enabled Workbook.

Способ 7: Функция ФИЛЬТР (FILTER) для динамической выборки

В Excel 365 и Excel 2021 появилась функция ФИЛЬТР (FILTER), которая позволяет динамически отображать только те строки, которые содержат искомый текст. Например, чтобы вывести все строки с упоминанием «проект»:

=ФИЛЬТР(

A2:B100;

НЕ(ЕЧИСЛО(ПОИСК("проект"; A2:A100)));

"Не найдено"

)

Преимущества метода:

  • 🔄 Автоматическое обновление: Результат меняется при изменении исходных данных.
  • 📊 Без вспомогательных столбцов: Не нужно создавать дополнительные формулы.
  • 🔍 Гибкость: Можно комбинировать с другими условиями (например, И(условие1; условие2)).

Частые ошибки и как их избежать

При работе с частичными совпадениями пользователи часто сталкиваются с типичными проблемами:

  1. Ошибка #ЗНАЧ! в функции ПОИСК: Возникает, если текст не найден. Решение — обернуть в ЕСЛИОШИБКА или ЕЧИСЛО.
  2. Не учитывается регистр: Функция ПОИСК игнорирует регистр. Если важен регистр, используйте НАЙТИ.
  3. Медленная работа с большими данными: Формулы массивов (например, с ФИЛЬТР) могут тормозить. Решение — использовать Power Query.
  4. Неправильные символы подстановки: Забывают, что * заменяет любое количество символов, а не один. Для одного символа нужен ?.

Пример корректной обработки ошибок:

=ЕСЛИОШИБКА(

ПОИСК("текст"; A1);

"Нет совпадений"

)

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

Как найти ячейки, которые НЕ содержат определенный текст?

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

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

Или в условном форматировании:

=ЕЧИСЛО(ПОИСК("текст"; A1))=ЛОЖЬ
Можно ли искать по нескольким словам одновременно?

Да, комбинируйте функции с И или ИЛИ:

=ЕСЛИ(

И(

НЕ(ЕЧИСЛО(ПОИСК("слово1"; A1)));

НЕ(ЕЧИСЛО(ПОИСК("слово2"; A1)))

);

"Есть оба";

"Нет"

)

Как найти ячейки, содержащие только цифры?

Используйте функцию ЕЧИСЛО в комбинации с ЗНАЧЕН:

=ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(A1)); "Только цифры"; "Есть текст")

Или проверку на ошибку:

=ЕСЛИОШИБКА(ЗНАЧЕН(A1); "Есть текст"; "Только цифры")
Почему функция ПОИСК не находит кириллические символы?

Проблема может быть в кодировке файла или шрифте. Проверьте:

  1. Шрифт в ячейке (должен поддерживать кириллицу, например, Arial или Times New Roman).
  2. Кодировку при импорте данных (если данные загружены из внешнего источника).
  3. Язык формул в настройках Excel (Файл → Параметры → Язык).
Как искать по содержимому с учетом регистра?

Замените ПОИСК на НАЙТИ (FIND):

=ЕСЛИ(ЕЧИСЛО(НАЙТИ("Текст"; A1)); "Есть"; "Нет")

Функция НАЙТИ чувствительна к регистру, в отличие от ПОИСК.