Фильтр по словам в Excel: от простого к продвинутому

Работа с большими таблицами в Microsoft Excel часто требует точечного поиска информации по ключевым словам. Стандартные фильтры по числам или датам здесь бессильны — нужны инструменты, которые умеют анализировать текстовый контент. Согласно исследованию SpreadsheetWEB, 68% пользователей Excel регулярно сталкиваются с необходимостью фильтрации данных по фрагментам текста, но только 23% знают о существовании расширенных методов помимо базового автофильтра.

Эта статья раскроет все способы настройки текстового фильтра — от элементарного поиска по подстроке до сложных формул с регулярными выражениями. Вы научитесь фильтровать ячейки, содержащие определённые слова, исключать ненужные фразы, комбинировать несколько критериев и даже автоматизировать процесс с помощью Power Query. Особое внимание уделено типичным ошибкам, которые приводят к потере данных при фильтрации, и способам их избежать.

Материал будет полезен как начинающим пользователям, так и опытным аналитикам. Для первых мы подробно разберём базовые функции, для вторых — продвинутые техники с примерами кода на VBA. Все инструкции актуальны для Excel 2016–2023 и Microsoft 365, с пометками о различиях в старых версиях.

1. Базовый автофильтр: поиск по частичному совпадению

Самый простой способ отфильтровать данные по ключевому слову — использовать встроенный автофильтр. Он доступен во всех версиях Excel и не требует знания формул. Алгоритм работы:

  1. Выделите диапазон данных (включая заголовки столбцов).
  2. Перейдите на вкладку Данные → Фильтр (или нажмите Ctrl+Shift+L).
  3. Щёлкните по стрелке фильтра в нужном столбце и выберите Текстовые фильтры → Содержит....
  4. Введите искомое слово в поле и нажмите ОК.

Этот метод поддерживает нечёткий поиск: например, запрос "отчёт" найдёт и "отчётность", и "отчётный". Чтобы сузить результаты, используйте оператор тильды (~) перед словом — это заставит Excel искать точное совпадение регистра (например, ~Отчёт не найдёт "отчёт").

📊 Как часто вы используете текстовые фильтры в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда
⚠️ Внимание: Автофильтр не различает слова с разными окончаниями. Если вам нужно найти только "дом" и исключить "дома" или "домашний", используйте расширенный фильтр с формулами (см. раздел 4).
  • ✅ Преимущества: Быстро, интуитивно, работает без формул.
  • ❌ Ограничения: Нельзя искать по нескольким словам одновременно (только через оператор "ИЛИ").
  • 🔄 Обходной путь: Для поиска по двум словам (например, "отчёт" И "2023") примените фильтр дважды к одному столбцу.

2. Фильтр по нескольким словам с операторами "И"/"ИЛИ"

Когда нужно отфильтровать данные по нескольким ключевым словам, стандартный автофильтр становится неэффективным. Здесь поможет комбинация операторов:

  • "ИЛИ" (любое из слов): используйте фильтр Содержит с перечислением через запятую (например, отчёт,договор).
  • "И" (все слова): примените фильтр Содержит последовательно для каждого слова.

Для сложных условий (например, "содержит 'отчёт' ИЛИ 'договор', но НЕ 'черновик'") перейдите в Текстовые фильтры → Настраиваемый фильтр и задайте правила:


1-е условие: "содержит" → "отчёт"

Оператор: "или"

2-е условие: "содержит" → "договор"

3-е условие: "не содержит" → "черновик"

ОператорПример вводаРезультат
"И""отчёт" + "2023"Ячейки, содержащие оба слова
"ИЛИ""отчёт,договор"Ячейки с любым из слов
"НЕ""не содержит" → "черновик"Исключает ячейки с этим словом
"начинается с""отч*""Отчёт", "отчётность" но не "доотчёт"

Выделите диапазон с заголовками

Проверьте отсутствие пустых строк в данных

Убедитесь, что слова для поиска написаны одинаково (регистр важен!)

Сохраните копию данных перед фильтрацией-->

Если вам нужно искать по точному вхождению слова (например, "дом", но не "домовой"), используйте формулу с SEARCH или FIND в сочетании с пробелами:

=ИЛИ(НЕ(ЕЧИСЛО(ПОИСК(" дом ",A2))); A2="дом"; ПРАВСИМВ(A2;3)="дом")

3. Расширенный фильтр: гибкие критерии в отдельном диапазоне

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

  1. Создайте диапазон критериев (например, в ячейках 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 с этим не справляются, но есть обходные пути:

    1. Список словоформ: создайте отдельный столбец со всеми вариантами слова и используйте функцию ПОИСКПОЗ:
      =ЕЧИСЛО(ПОИСКПОЗ(""&A2&""; {"договор";"договора";"договором"};0))
    2. Лемматизация через Power Query:
      • Импортируйте данные в Power Query.
      • Добавьте пользовательский столбец с функцией лемматизации (требуется подключение к Azure Cognitive Services или локальному сервису).
      • Отфильтруйте по лемме (основной форме слова).
  • VBA-скрипт с морфологическим анализом: используйте библиотеку SharpNLP или Stanford NLP для интеграции с Excel.
  • Для русского языка эффективным решением станет подключение внешнего 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:

    1. Создайте поток, который читает список ключевых слов из SharePoint или OneDrive.
    2. Передаёт их в Power Query как параметр.
    3. Обновляет таблицу в Excel.

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

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

    ОшибкаПричинаРешение
    Фильтр не находит словаЛишние пробелы в данных или критерияхИспользуйте TRIM для очистки: =TRIM(A2)
    Потеря данных после фильтраФильтр применён к части диапазонаВсегда включайте заголовки столбцов в фильтруемый диапазон
    Медленная фильтрацияСлишком много формул в критерияхЗамените формулы на текстовые значения или используйте Power Query
    Не работает "НЕ содержит"Ячейка содержит ошибку #N/AДобавьте проверку: =И(ЕОШИБКА(ПОИСК("слово";A2)); НЕ(ЕЧИСЛО(ПОИСК("#N/A";A2))))

    Ещё одна частая проблема — некорректная работа с регистром. Функции ПОИСК и SEARCH регистронезависимые, а НАЙТИ и FIND — регистрозависимые. Если вам нужно найти слово с конкретной заглавной буквой, используйте:

    =НЕ(ЕЧИСЛО(НАЙТИ("Отчёт";A2)))

    Для диагностики проблем с фильтрацией используйте пошаговое выполнение формул (Формулы → Вычислить формулу). Это поможет выявить, на каком этапе происходит сбой.

    Часто задаваемые вопросы

    Можно ли в Excel фильтровать по словам с учётом синонимов (например, "договор" = "контракт")?

    Прямой функции для этого нет, но есть обходные пути:

    1. Создайте таблицу синонимов на отдельном листе.
    2. Используйте VLOOKUP или XLOOKUP, чтобы заменить слова в данных на единый вариант.
    3. Примените фильтр к модифицированным данным.

    Пример формулы для замены:

    =ЕСЛИОШИБКА(XLOOKUP(A2; Синонимы[Слово]; Синонимы[Замена]); A2)

    Как отфильтровать ячейки, содержащие ровно 2 слова из списка (например, "отчёт" и "2023", но не "отчёт 2023 договор")?

    Используйте комбинацию функций SEARCH и COUNTIF:

    =И(
    

    ЕЧИСЛО(ПОИСК("отчёт"; A2)),

    ЕЧИСЛО(ПОИСК("2023"; A2)),

    СЧЁТЕСЛИ(РАЗБИТЬТЕКСТ(A2; " "); {"отчёт";"2023"})=2

    )

    Функция РАЗБИТЬТЕКСТ (или TEXTSPLIT в английской версии) разделяет текст на слова, а СЧЁТЕСЛИ считает, сколько из них входят в ваш список.

    Почему расширенный фильтр не работает с формулами в критериях?

    Частые причины:

    • Формулы не скопированы вниз на всю область критериев (должны быть во всех строках).
    • Используются относительные ссылки без знака $.
    • В настройках Excel отключён автоматический пересчёт формул (включите в Формулы → Параметры вычислений → Автоматически).

    Проверьте, возвращают ли формулы в критериях ИСТИНА/ЛОЖЬ (а не текст или числа).

    Как сохранить результаты фильтрации в новый файл автоматически?

    Сделайте это через Power Query:

    1. Импортируйте данные в Power Query.
    2. Примените фильтр по ключевым словам.
    3. В меню Главная → Закрыть и загрузить в... выберите Создать только соединение.
    4. Создайте новую книгу и подключитесь к этому соединению.
    5. Настройте автоматическое обновление при открытии файла.

    Для полной автоматизации напишите VBA-макрос, который будет:

    1. Фильтровать данные.
    2. Копировать видимые ячейки (SpecialCells(xlCellTypeVisible)).
    3. Создавать новую книгу и вставлять туда результаты.
    4. Сохранять файл с текущей датой в имени.
    Можно ли фильтровать по словам в защищённом листе?

    Да, но с ограничениями:

    • Если лист защищён без разрешения на фильтрацию, сначала снимите защиту (Рецензирование → Снять защиту листа).
    • При настройке защиты (Рецензирование → Защитить лист) отметьте галочку Использовать автофильтр.
    • Для расширенного фильтра требуется также разрешение на изменение объектов.

    Если вы не администратор файла, попробуйте:

    1. Скопировать данные на новый лист (Правка → Специальная вставка → Значения).
    2. Фильтровать копию.