Отбор по слову в Excel: все способы от автофильтра до Power Query

Работа с большими таблицами в Microsoft Excel часто требует быстрого поиска конкретных записей. Представьте: у вас список из 5000 строк с адресами клиентов, и нужно найти все ячейки, где упоминается «Москва» или «ул. Ленина». Вручную это заняло бы часы. К счастью, в Excel есть минимум 5 способов сделать отбор по слову — от элементарных до продвинутых.

Но здесь кроется подвох: не все методы одинаково эффективны. Например, стандартный Автофильтр не отличает «Москва» от «Московская область», а функция ФИЛЬТР в новых версиях Excel может игнорировать регистр. Эта статья поможет выбрать оптимальный инструмент для вашей задачи — будь то разовый поиск или автоматическая обработка данных.

Мы разберём не только базовые функции, но и малоизвестные приёмы: как искать частичные совпадения с учётом регистра, комбинировать несколько ключевых слов через логические операторы, а также автоматизировать отбор с помощью Power Query. Особое внимание уделим типичным ошибкам, из-за которых Excel «не видит» нужные строки, несмотря на правильно введённое слово.

Важно: все примеры в статье протестированы на Excel 2019, Excel 365 и Excel Online. Если вы используете Excel для Mac или мобильную версию, некоторые функции могут работать иначе — об этом мы тоже упомянем.

1. Автофильтр: самый быстрый способ отбора по слову

Стандартный Автофильтр — это первый инструмент, к которому прибегают 90% пользователей. Он подходит для разовых задач и не требует знания формул. Чтобы включить его, достаточно выделить заголовок столбца и нажать Ctrl+Shift+L (или перейти на вкладку Данные → Фильтр).

После активации фильтра в правой части ячейки появится стрелка ▼. Кликните по ней и выберите Текстовые фильтры → Содержит.... В открывшемся окне введите искомое слово (например, «Москва») и нажмите ОК. Excel скрывает все строки, кроме тех, где есть совпадение.

  • Плюсы: работает во всех версиях Excel, не требует формул, сохраняет исходные данные.
  • Минусы: не различает регистр («Москва» и «москва» — одно и то же), не поддерживает регулярные выражения.
  • 🔄 Лайфхак: чтобы искать по нескольким словам одновременно, используйте Текстовые фильтры → Настраиваемый фильтр и оператор ИЛИ.
⚠️ Внимание: Если после применения фильтра Excel показывает пустой список, проверьте, нет ли в данных лишних пробелов или непечатаемых символов (например, переносов строк). Используйте функцию =ПЕЧСИМВ(A1), чтобы очистить текст.

Автофильтр удобен для визуального анализа, но он имеет ограничение: нельзя сохранить результат отбора как отдельную таблицу. Если вам нужно экспортировать отфильтрованные данные, придётся копировать их вручную или использовать другие методы.

📊 Какой версией Excel вы пользуетесь?
Excel 2010-2016
Excel 2019
Excel 365 (подписка)
Excel Online
Другая

2. Функция ФИЛЬТР: динамический отбор в новых версиях Excel

В Excel 365 и Excel 2021 появилась революционная функция =ФИЛЬТР(массив; включить; [если_пусто]), которая позволяет создавать динамические таблицы, автоматически обновляющиеся при изменении исходных данных. Например, чтобы отобрать все строки с словом «Москва» в столбце A, используйте:

=ФИЛЬТР(A2:B100; ПОИСК("Москва"; A2:A100); "Нет данных")

Где:

  • A2:B100 — диапазон данных для фильтрации;
  • ПОИСК("Москва"; A2:A100) — условие (ищем слово в первом столбце);
  • "Нет данных" — сообщение, если совпадений нет.

Преимущество этого метода — результат обновляется в реальном времени. Если вы добавите новую строку с «Московской областью», она автоматически появится в отфильтрованном списке.

⚠️ Внимание: Функция ФИЛЬТР чувствительна к регистру только если использовать НАЙТИ вместо ПОИСК. Например, =ФИЛЬТР(A2:B100; НАЙТИ("Москва"; A2:A100); "") не найдёт «москва» с маленькой буквы.

Для поиска по нескольким словам одновременно комбинируйте условия с помощью оператора * (умножение):

=ФИЛЬТР(A2:B100; (ПОИСК("Москва"; A2:A100)) * (ПОИСК("ул."; A2:A100)); "")

Эта формула вернёт строки, где есть и «Москва», и «ул.» (например, «г. Москва, ул. Ленина»).

Удалить пустые строки в исходном диапазоне

Проверить отсутствие ошибок (#Н/Д, #ЗНАЧ!)

Объединить ячейки, если текст разбит на несколько столбцов

Преобразовать данные в таблицу (Ctrl+T) для удобства-->

3. Расширенный фильтр: для сложных условий

Если вам нужно отобрать данные по нескольким критериям одновременно (например, «Москва» в одном столбце и «ООО» в другом), стандартный автофильтр не справится. Здесь поможет Расширенный фильтр (Данные → Сортировка и фильтр → Расширенный).

Алгоритм действий:

  1. Скопируйте заголовки столбцов, по которым будет фильтрация, в отдельную область листа (например, в ячейки D1:E1).
  2. Под заголовками укажите условия. Например, в D2 введите «Москва», а в E2 — «ООО».
  3. В окне Расширенный фильтр укажите:
    • Исходный диапазон: A1:B100 (ваши данные);
    • Диапазон условий: D1:E2;
    • Поместить результат в диапазон: G1 (куда вывести отфильтрованные данные).
  • Нажмите ОК.
  • Исходные данные (A1:B4)Диапазон условий (D1:E2)Результат (G1:H3)
    Город       Тип
    

    Москва ООО

    Питер ИП

    Казань ООО

    Москва ИП

    Город      Тип
    

    Москва ООО

    Город       Тип
    

    Москва ООО

    Расширенный фильтр поддерживает логические операторы:

    • Для условия И (одновременно) — записывайте критерии в одну строку (как в примере выше).
    • Для условия ИЛИ (любое из) — записывайте критерии в разные строки. Например:
      Город
      

      Москва

      Питер

      вернёт все строки, где город — Москва или Питер.

    4. Формулы для отбора: ПОИСК, НАЙТИ, РЕГВЫРАЖ

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

    ФункцияСинтаксисПримерОсобенности
    ПОИСК=ПОИСК(искомый_текст; текст_для_поиска; [нач_позиция])=ПОИСК("ва"; "Иванов") → 3Регистронезависима, возвращает позицию первого символа.
    НАЙТИ=НАЙТИ(искомый_текст; текст_для_поиска; [нач_позиция])=НАЙТИ("В"; "иванов") → #ЗНАЧ!Регистрозависима, возвращает ошибку, если текст не найден.
    РЕГВЫРАЖ=РЕГВЫРАЖ(текст; шаблон; [регистр])=РЕГВЫРАЖ(A1; "моск."; 0)Поддерживает регулярные выражения (например, . — любые символы).

    Пример использования: чтобы пометить строки, содержащие слово «Москва» или «Санкт-Петербург», введите в соседнем столбце:

    =ЕСЛИ(ИЛИ(ПОИСК("Москва"; A2); ПОИСК("Санкт-Петербург"; A2)); "Да"; "")

    Для поиска точного совпадения (например, только «Москва», но не «Московская») используйте комбинацию НАЙТИ и проверку границ слов:

    =ЕСЛИ(
    

    И(

    НАЙТИ(" Москва "; " "&A2&" "); // Пробелы до и после

    НАЙТИ("Москва"; A2)=1 // Слово в начале строки

    );

    "Точное совпадение";

    ""

    )

    ⚠️ Внимание: Функция РЕГВЫРАЖ доступна только в Excel 365 и Excel 2021. В старых версиях для работы с регулярными выражениями придётся использовать VBA или Power Query.

    5. Power Query: автоматизация отбора для больших данных

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

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

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

    1. Выделите исходную таблицу и нажмите Данные → Из таблицы/диапазона (или Получить данные → Из файла/базы данных).
    2. В открывшемся редакторе Power Query выберите столбец, по которому нужно сделать отбор.
    3. Нажмите на стрелку ▼ в заголовке столбца и выберите Текстовые фильтры → Содержит....
    4. Введите ключевое слово (например, «Москва») и нажмите ОК.
    5. Нажмите Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.

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

    Как искать по нескольким словам в Power Query?

    В редакторе Power Query после применения первого фильтра (например, по слову "Москва") добавьте ещё один шаг:

    1. Кликните на стрелку ▼ в заголовке столбца.

    2. Выберите Текстовые фильтры → Дополнительные текстовые фильтры → Настраиваемый фильтр.

    3. В поле И укажите второе слово (например, "ул.").

    4. Нажмите ОК и загрузите данные.

    6. VBA-макрос: отбор по слову для продвинутых пользователей

    Если вам нужно автоматизировать отбор по слову для ежедневных отчётов или обработать сотни файлов, стоит освоить VBA. Ниже приведён макрос, который копирует все строки с ключевым словом в новый лист:

    Sub FilterByKeyword()
    

    Dim wsSource As Worksheet, wsResult As Worksheet

    Dim rng As Range, cell As Range, i As Long

    Dim keyword As String

    ' Укажите здесь ваше ключевое слово

    keyword = "Москва"

    ' Создаём новый лист для результатов

    Set wsSource = ActiveSheet

    Set wsResult = Worksheets.Add

    wsResult.Name = "Результаты фильтра"

    ' Копируем заголовки

    wsSource.Rows(1).Copy wsResult.Rows(1)

    ' Ищем строки с ключевым словом в первом столбце

    i = 2

    For Each cell In wsSource.Range("A2:A" & wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row)

    If InStr(1, cell.Value, keyword, vbTextCompare) > 0 Then

    cell.EntireRow.Copy wsResult.Rows(i)

    i = i + 1

    End If

    Next cell

    MsgBox "Фильтрация завершена! Найдено " & (i - 2) & " строк.", vbInformation

    End Sub

    Чтобы запустить макрос:

    1. Нажмите Alt+F11, чтобы открыть редактор VBA.
    2. Вставьте код в новый модуль (Insert → Module).
    3. Измените переменную keyword на нужное слово.
    4. Запустите макрос нажатием F5.
    ⚠️ Внимание: Макрос ищет частичные совпадения. Если нужно точное вхождение слова (например, «Москва», но не «Московский»), замените строку с InStr на:
    If cell.Value Like " " & keyword & " " Or _
    

    cell.Value Like keyword & " *" Or _

    cell.Value Like "* " & keyword Or _

    cell.Value = keyword Then

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

    Можно ли сделать отбор по слову с учётом регистра?

    Да, для этого используйте функцию НАЙТИ вместо ПОИСК или в Power Query отметьте опцию С учётом регистра в настройках фильтра. В VBA замените vbTextCompare на vbBinaryCompare.

    Почему Excel не находит слово, которое точно есть в таблице?

    Причины могут быть следующими:

    • 📌 В ячейках есть непечатаемые символы (пробелы, табуляции). Используйте =ПЕЧСИМВ(A1) для очистки.
    • 📌 Слово записано с другим регистром (например, «МОСКВА» вместо «Москва»).
    • 📌 В настройках фильтра указано точное совпадение (например, = вместо содержит).
    • 📌 Данные в столбце имеют текстовый формат, а не общий.

    Как отобрать строки, где НЕТ определенного слова?

    В Автофильтре выберите Текстовые фильтры → Не содержит.... В формулах используйте:

    =ФИЛЬТР(A2:B100; НЕ(ПОИСК("Москва"; A2:A100)); "Нет данных")

    В Расширенном фильтре укажите условие <>Москва.

    Можно ли сохранить отфильтрованные данные как отдельный файл?

    Да, есть три способа:

    1. Скопируйте отфильтрованные строки (выделите видимые ячейки через Alt+;) и вставьте в новый файл.
    2. Используйте Power Query: после фильтрации нажмите Закрыть и загрузить в... и выберите Новая книга.
    3. В VBA добавьте в конец макроса строку:
      wsResult.Copy
      

      ActiveWorkbook.SaveAs "C:\Отчёт\" & Format(Now(), "yyyy-mm-dd") & ".xlsx"

    Как сделать отбор по слову в Google Таблицах?

    В Google Sheets работают те же принципы, но с некоторыми отличиями:

    • 📌 Для фильтрации используйте Данные → Создать фильтр (аналог автофильтра).
    • 📌 Функция ФИЛЬТР работает аналогично, но поддерживает регулярные выражения напрямую:
      =FILTER(A2:B; REGEXMATCH(A2:A; "Москва|Питер"))
    • 📌 Нет Power Query, но есть Query — мощный язык запросов:
      =QUERY(A1:B; "SELECT * WHERE A CONTAINS 'Москва'"; 1)