Работа с большими таблицами в Microsoft Excel часто требует точечного поиска информации по ключевым словам. Стандартные фильтры по числам или датам здесь бессильны — нужны инструменты, которые умеют анализировать текстовый контент. Согласно исследованию SpreadsheetWEB, 68% пользователей Excel регулярно сталкиваются с необходимостью фильтрации данных по фрагментам текста, но только 23% знают о существовании расширенных методов помимо базового автофильтра.
Эта статья раскроет все способы настройки текстового фильтра — от элементарного поиска по подстроке до сложных формул с регулярными выражениями. Вы научитесь фильтровать ячейки, содержащие определённые слова, исключать ненужные фразы, комбинировать несколько критериев и даже автоматизировать процесс с помощью Power Query. Особое внимание уделено типичным ошибкам, которые приводят к потере данных при фильтрации, и способам их избежать.
Материал будет полезен как начинающим пользователям, так и опытным аналитикам. Для первых мы подробно разберём базовые функции, для вторых — продвинутые техники с примерами кода на VBA. Все инструкции актуальны для Excel 2016–2023 и Microsoft 365, с пометками о различиях в старых версиях.
1. Базовый автофильтр: поиск по частичному совпадению
Самый простой способ отфильтровать данные по ключевому слову — использовать встроенный автофильтр. Он доступен во всех версиях Excel и не требует знания формул. Алгоритм работы:
- Выделите диапазон данных (включая заголовки столбцов).
- Перейдите на вкладку
Данные → Фильтр(или нажмитеCtrl+Shift+L). - Щёлкните по стрелке фильтра в нужном столбце и выберите
Текстовые фильтры → Содержит.... - Введите искомое слово в поле и нажмите
ОК.
Этот метод поддерживает нечёткий поиск: например, запрос "отчёт" найдёт и "отчётность", и "отчётный". Чтобы сузить результаты, используйте оператор тильды (~) перед словом — это заставит Excel искать точное совпадение регистра (например, ~Отчёт не найдёт "отчёт").
⚠️ Внимание: Автофильтр не различает слова с разными окончаниями. Если вам нужно найти только "дом" и исключить "дома" или "домашний", используйте расширенный фильтр с формулами (см. раздел 4).
- ✅ Преимущества: Быстро, интуитивно, работает без формул.
- ❌ Ограничения: Нельзя искать по нескольким словам одновременно (только через оператор "ИЛИ").
- 🔄 Обходной путь: Для поиска по двум словам (например, "отчёт" И "2023") примените фильтр дважды к одному столбцу.
2. Фильтр по нескольким словам с операторами "И"/"ИЛИ"
Когда нужно отфильтровать данные по нескольким ключевым словам, стандартный автофильтр становится неэффективным. Здесь поможет комбинация операторов:
- "ИЛИ" (любое из слов): используйте фильтр
Содержитс перечислением через запятую (например,отчёт,договор). - "И" (все слова): примените фильтр
Содержитпоследовательно для каждого слова.
Для сложных условий (например, "содержит 'отчёт' ИЛИ 'договор', но НЕ 'черновик'") перейдите в Текстовые фильтры → Настраиваемый фильтр и задайте правила:
1-е условие: "содержит" → "отчёт"
Оператор: "или"
2-е условие: "содержит" → "договор"
3-е условие: "не содержит" → "черновик"
| Оператор | Пример ввода | Результат |
|---|---|---|
| "И" | "отчёт" + "2023" | Ячейки, содержащие оба слова |
| "ИЛИ" | "отчёт,договор" | Ячейки с любым из слов |
| "НЕ" | "не содержит" → "черновик" | Исключает ячейки с этим словом |
| "начинается с" | "отч*" | "Отчёт", "отчётность" но не "доотчёт" |
Выделите диапазон с заголовками
Проверьте отсутствие пустых строк в данных
Убедитесь, что слова для поиска написаны одинаково (регистр важен!)
Сохраните копию данных перед фильтрацией-->
Если вам нужно искать по точному вхождению слова (например, "дом", но не "домовой"), используйте формулу с SEARCH или FIND в сочетании с пробелами:
=ИЛИ(НЕ(ЕЧИСЛО(ПОИСК(" дом ",A2))); A2="дом"; ПРАВСИМВ(A2;3)="дом")
3. Расширенный фильтр: гибкие критерии в отдельном диапазоне
Когда стандартные инструменты не справляются, на помощь приходит расширенный фильтр. Его ключевое преимущество — возможность задавать критерии в отдельном диапазоне и сохранять результаты в новое место. Алгоритм:
- Создайте диапазон критериев (например, в ячейках
D1:D2):D1: заголовок столбца (должен совпадать с оригиналом)D2: формула или текст для фильтра (например,="отчёт")
Данные → Сортировка и фильтр → Расширенный.Исходный диапазон: ваши данные с заголовкамиДиапазон условий:D1:D2Поместить результат в диапазон: выберите ячейку для вывода
Преимущества расширенного фильтра:
- 🔹 Можно использовать формулы в критериях (например,
=И(ЕСТЬОШИБКА(ПОИСК("черновик";A2))); ИЛИ(НЕ(ЕЧИСЛО(ПОИСК("отчёт";A2))); НЕ(ЕЧИБКА(ПОИСК("договор";A2)))))). - 🔹 Поддерживает несколько столбцов критериев (аналог оператора "И").
- 🔹 Результаты можно выводить на другой лист.
Пример формулы для поиска слов с учётом регистра
=И(НЕ(ЕЧИСЛО(НАЙТИ("Отчёт";A2)))) — найдёт только "Отчёт" с большой буквы, игнорируя "отчёт".
⚠️ Внимание: Если в диапазоне критериев используете формулы, не забывайте фиксировать ссылки на ячейки знаком$(например,$A$1). Иначе при копировании формулы ссылки сдвинутся, и фильтр перестанет работать.
4. Фильтрация с помощью формул: FILTER, SEARCH, REGEX
Для пользователей Excel 365 и Excel 2021 доступна функция FILTER, которая революционизировала работу с текстовыми данными. Она позволяет отфильтровать диапазон по условию, заданному формулой, и вернуть только соответствующие строки.
Примеры использования:
- Поиск по одному слову:
=ФИЛЬТР(A2:B100; ЕЧИСЛО(ПОИСК("отчёт"; A2:A100))) - Поиск по нескольким словам (оператор "ИЛИ"):
=ФИЛЬТР(A2:B100; (ЕЧИСЛО(ПОИСК("отчёт"; A2:A100))) + (ЕЧИСЛО(ПОИСК("договор"; A2:A100)))) - Исключение слов:
=ФИЛЬТР(A2:B100; ЕОШИБКА(ПОИСК("черновик"; A2:A100)))
Для сложных шаблонов (например, поиска слов с определёнными окончаниями) используйте REGEX-функции через Power Query или VBA. Пример регулярного выражения для поиска слов на "-ов":
\b\w+ов\b
1) Совпадают ли размеры фильтруемого диапазона и массива условий
2) Нет ли пустых ячеек в критериях
3) Правильно ли указаны абсолютные ссылки (с символом $)
-->
5. Фильтрация с учётом морфологии: поиск словоформ
Одна из самых сложных задач — поиск по разным формам слова (например, найти все варианты слова "договор": "договора", "договором" и т.д.). Стандартные инструменты Excel с этим не справляются, но есть обходные пути:
- Список словоформ: создайте отдельный столбец со всеми вариантами слова и используйте функцию
ПОИСКПОЗ:=ЕЧИСЛО(ПОИСКПОЗ(""&A2&""; {"договор";"договора";"договором"};0)) - Лемматизация через Power Query:
- Импортируйте данные в Power Query.
- Добавьте пользовательский столбец с функцией лемматизации (требуется подключение к Azure Cognitive Services или локальному сервису).
- Отфильтруйте по лемме (основной форме слова).
Для русского языка эффективным решением станет подключение внешнего API (например, Yandex Speller или DaData), который вернёт основную форму слова. Пример запроса через WEBSERVICE:
=WEBSERVICE("https://speller.yandex.net/services/spellservice.json/checkText?text="&A2)
⚠️ Внимание: Морфологический анализ требует значительных ресурсов. При работе с большими таблицами (>10 000 строк) используйте Power Query или VBA, чтобы избежать зависания Excel.
6. Автоматизация фильтрации: макросы и Power Query
Для регулярной фильтрации по одним и тем же критериям целесообразно автоматизировать процесс. Рассмотрим два подхода:
- Макрос на VBA:
Создайте макрос, который будет применять фильтр по заданным словам при нажатии кнопки. Пример кода для поиска ячеек, содержащих "отчёт" или "договор":
Sub FilterByKeywords()Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1").AutoFilter Field:=1, Criteria1:="=отчёт", Operator:=xlOr, Criteria2:="=договор"
End Sub
- Power Query:
Импортируйте данные в
Power Query, добавьте столбец с условием (например,= Text.Contains([Column1], "отчёт")) и отфильтруйте по нему. Преимущество — возможность сохранять шаги и обновлять данные одним кликом.
Для сложных сценариев (например, фильтрация по словам из внешнего файла) комбинируйте Power Query с Power Automate:
- Создайте поток, который читает список ключевых слов из SharePoint или OneDrive.
- Передаёт их в Power Query как параметр.
- Обновляет таблицу в Excel.
7. Типичные ошибки и как их избежать
Даже опытные пользователи допускают ошибки при фильтрации текста в Excel. Вот самые распространённые:
| Ошибка | Причина | Решение |
|---|---|---|
| Фильтр не находит слова | Лишние пробелы в данных или критериях | Используйте TRIM для очистки: =TRIM(A2) |
| Потеря данных после фильтра | Фильтр применён к части диапазона | Всегда включайте заголовки столбцов в фильтруемый диапазон |
| Медленная фильтрация | Слишком много формул в критериях | Замените формулы на текстовые значения или используйте Power Query |
| Не работает "НЕ содержит" | Ячейка содержит ошибку #N/A | Добавьте проверку: =И(ЕОШИБКА(ПОИСК("слово";A2)); НЕ(ЕЧИСЛО(ПОИСК("#N/A";A2)))) |
Ещё одна частая проблема — некорректная работа с регистром. Функции ПОИСК и SEARCH регистронезависимые, а НАЙТИ и FIND — регистрозависимые. Если вам нужно найти слово с конкретной заглавной буквой, используйте:
=НЕ(ЕЧИСЛО(НАЙТИ("Отчёт";A2)))
Для диагностики проблем с фильтрацией используйте пошаговое выполнение формул (Формулы → Вычислить формулу). Это поможет выявить, на каком этапе происходит сбой.
Часто задаваемые вопросы
Можно ли в Excel фильтровать по словам с учётом синонимов (например, "договор" = "контракт")?
Прямой функции для этого нет, но есть обходные пути:
- Создайте таблицу синонимов на отдельном листе.
- Используйте
VLOOKUPилиXLOOKUP, чтобы заменить слова в данных на единый вариант. - Примените фильтр к модифицированным данным.
Пример формулы для замены:
=ЕСЛИОШИБКА(XLOOKUP(A2; Синонимы[Слово]; Синонимы[Замена]); A2)
Как отфильтровать ячейки, содержащие ровно 2 слова из списка (например, "отчёт" и "2023", но не "отчёт 2023 договор")?
Используйте комбинацию функций SEARCH и COUNTIF:
=И(
ЕЧИСЛО(ПОИСК("отчёт"; A2)),
ЕЧИСЛО(ПОИСК("2023"; A2)),
СЧЁТЕСЛИ(РАЗБИТЬТЕКСТ(A2; " "); {"отчёт";"2023"})=2
)
Функция РАЗБИТЬТЕКСТ (или TEXTSPLIT в английской версии) разделяет текст на слова, а СЧЁТЕСЛИ считает, сколько из них входят в ваш список.
Почему расширенный фильтр не работает с формулами в критериях?
Частые причины:
- Формулы не скопированы вниз на всю область критериев (должны быть во всех строках).
- Используются относительные ссылки без знака
$. - В настройках Excel отключён автоматический пересчёт формул (включите в
Формулы → Параметры вычислений → Автоматически).
Проверьте, возвращают ли формулы в критериях ИСТИНА/ЛОЖЬ (а не текст или числа).
Как сохранить результаты фильтрации в новый файл автоматически?
Сделайте это через Power Query:
- Импортируйте данные в
Power Query. - Примените фильтр по ключевым словам.
- В меню
Главная → Закрыть и загрузить в...выберитеСоздать только соединение. - Создайте новую книгу и подключитесь к этому соединению.
- Настройте автоматическое обновление при открытии файла.
Для полной автоматизации напишите VBA-макрос, который будет:
- Фильтровать данные.
- Копировать видимые ячейки (
SpecialCells(xlCellTypeVisible)). - Создавать новую книгу и вставлять туда результаты.
- Сохранять файл с текущей датой в имени.
Можно ли фильтровать по словам в защищённом листе?
Да, но с ограничениями:
- Если лист защищён без разрешения на фильтрацию, сначала снимите защиту (
Рецензирование → Снять защиту листа). - При настройке защиты (
Рецензирование → Защитить лист) отметьте галочкуИспользовать автофильтр. - Для расширенного фильтра требуется также разрешение на
изменение объектов.
Если вы не администратор файла, попробуйте:
- Скопировать данные на новый лист (
Правка → Специальная вставка → Значения). - Фильтровать копию.