Как в Excel сделать фильтр по нескольким значениям: от автофильтра до Power Query

Работа с большими таблицами в Microsoft Excel часто требует отбора данных по нескольким критериям одновременно. Например, вам нужно найти все продажи только по двум регионам (Москва и Питер) за последний квартал, исключив остальные записи. Стандартный автофильтр с этим не всегда справляется эффективно — особенно когда условий много или они сложные.

В этой статье разберём 5 рабочих способов фильтрации по нескольким значениям: от базовых инструментов (Автофильтр, Расширенный фильтр) до продвинутых (Power Query, формулы массивов, макросы). Каждый метод проиллюстрирован примерами для Excel 2010–2023 и Microsoft 365, с учётом нюансов разных версий. Вы узнаете, как:

  • 🔍 Фильтровать данные по списку допустимых значений (например, только "Да" и "Нет")
  • 📊 Комбинировать условия "И"/"ИЛИ" в одном фильтре
  • 🔄 Автоматизировать фильтрацию с помощью Power Query и VBA
  • ⚡ Ускорить работу с большими таблицами (100К+ строк)

Особое внимание уделим скрытым ловушкам: почему иногда фильтр "не видит" данные, как избежать ошибки #ЗНАЧ! в формулах и почему Расширенный фильтр может удалить исходные данные без предупреждения.

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

Самый простой метод — использовать стандартный Автофильтр (Данные → Фильтр). Он подходит для небольших таблиц (до 10К строк) и когда нужно отобрать данные по 2–3 критериям в одном столбце.

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

  1. Выделите заголовки столбцов (или любую ячейку в таблице) и нажмите Ctrl+Shift+L (или Данные → Фильтр).
  2. Кликните по стрелке фильтра в нужном столбце.
  3. Снимите галочку с (Выделить всё) и отметьте только те значения, которые нужны (например, "Москва", "Санкт-Петербург").
  4. Нажмите OK — Excel скрывает все строки, не соответствующие условиям.

🔹 Нюанс: Если в столбце больше 10 уникальных значений, Excel покажет только первые 10 в списке. Чтобы увидеть остальные, используйте поле Текстовый фильтр (введите часть значения) или Фильтр по цвету (если данные выделены цветом).

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

Расширенный фильтр (Данные → Сортировка и фильтр → Расширенный) позволяет:

  • 📋 Фильтровать данные по нескольким столбцам одновременно (условия "И"/"ИЛИ").
  • 🔄 Копировать отфильтрованные данные в другое место (без изменения исходной таблицы).
  • 📈 Работать с таблицами до 1 млн строк (в отличие от автофильтра).

Пример: Отберём все продажи только по регионам "Москва" или "Казань" и с суммой заказа > 50 000 ₽.

Исходная таблица (A1:C6) Критерий фильтра (E1:F3) Результат (H1:J3)
Регион   Сумма   Дата

Москва 60000 12.05.2023

Питер 45000 10.05.2023

Казань 75000 11.05.2023

Москва 30000 09.05.2023

Сочи 90000 13.05.2023

Регион   Сумма

Москва >50000

Казань >50000

Регион   Сумма   Дата

Москва 60000 12.05.2023

Казань 75000 11.05.2023

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

  1. Создайте таблицу критериев (например, в ячейках E1:F3). Заголовки должны совпадать с заголовками исходной таблицы.
  2. Введите условия: для "ИЛИ" — значения в одном столбце, для "И" — в одной строке.
  3. Перейдите в Данные → Сортировка и фильтр → Расширенный.
  4. Укажите:
    • Исходный диапазон: $A$1:$C$6
    • Диапазон условий: $E$1:$F$3
    • Поставьте галочку Скопировать результат в другое место и укажите ячейку вывода (например, $H$1).
  • Нажмите OK.
  • Заголовки в таблице критериев совпадают с исходными|Нет пустых строк в диапазоне условий|Для "ИЛИ" значения в одном столбце, для "И" — в одной строке|Указан правильный диапазон вывода результата-->

    ⚠️ Внимание: Если не поставить галочку Скопировать результат в другое место, Excel удалит все строки, не соответствующие критериям, без возможности отмены (Ctrl+Z не сработает!). Всегда тестируйте фильтр на копии данных.

    3. Фильтрация по нескольким значениям с помощью формул

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

    Способ 1: Функция ФИЛЬТР (Excel 365 и 2021)

    Самый современный метод — использовать динамический массив:

    =ФИЛЬТР(A2:C6; (A2:A6="Москва") + (A2:A6="Казань"); "Нет данных")

    Формула вернёт все строки, где в столбце A указано "Москва" или "Казань". Если совпадений нет — выведет "Нет данных".

    Способ 2: Комбинация ЕСЛИ + ИНДЕКС + ПОИСКПОЗ (для старых версий)

    Для Excel 2010–2019 подойдёт формула массива (вводится с Ctrl+Shift+Enter):

    =ЕСЛИОШИБКА(ИНДЕКС($A$2:$C$6; НАИМЕНЬШИЙ(ЕСЛИ(($A$2:$A$6="Москва")+($A$2:$A$6="Казань"); СТРОКА($A$2:$A$6)-1); СТРОКА(A1)); КОЛОНКА(A1)); "")

    🔹 Как работает: Формула проверяет каждый регион, возвращает номера строк с совпадениями, а затем извлекает данные по этим строкам.

    📊 Какой способ фильтрации вы используете чаще?
    Автофильтр
    Расширенный фильтр
    Формулы (ФИЛЬТР/ИНДЕКС)
    Power Query
    Макросы

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

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

    • 📊 Таблиц с 100К+ строк (где стандартные фильтры тормозят).
    • 🔄 Регулярного импорта данных (например, из SQL, CSV, JSON).
    • 🔧 Сложных условий (например, фильтрация по частичному совпадению текста).

    Пример: Отфильтруем данные по списку регионов из отдельной таблицы.

    1. Выделите исходную таблицу и нажмите Данные → Из таблицы/диапазона (откроется Power Query).
    2. В панели Применённые шаги кликните на значок шестерёнки рядом с Источник.
    3. Нажмите Добавить столбец → Настраиваемый столбец и введите формулу:
      = Table.SelectRows(#"Предыдущий шаг", each List.Contains({"Москва", "Казань"}, [Регион]))
    4. Нажмите Закрыть и загрузить — данные отфильтруются и загрузятся на новый лист.

    🔹 Преимущество: Фильтр сохраняется в шагах запроса. При обновлении исходных данных (Данные → Обновить все) фильтрация применится автоматически.

    Как фильтровать по динамическому списку?

    Если список значений для фильтра (например, регионы) хранится в отдельной таблице и может меняться, используйте такой подход в Power Query:

    1. Загрузите обе таблицы в Power Query.

    2. Объедините их по ключевому столбцу (например, "Регион") с типом объединения Внутреннее.

    3. Удалите ненужные столбцы из второй таблицы.

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

    5. Макросы: фильтрация по нескольким значениям в один клик

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

    Sub FilterByMultipleValues()
    

    Dim ws As Worksheet

    Dim filterRange As Range, criteriaRange As Range

    Dim lastRow As Long

    Set ws = ActiveSheet

    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    Set filterRange = ws.Range("A1:C" & lastRow)

    Set criteriaRange = ws.Range("E1:E10")

    ' Применяем расширенный фильтр

    filterRange.AdvancedFilter Action:=xlFilterInPlace, _

    CriteriaRange:=criteriaRange, _

    Unique:=False

    End Sub

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

    1. Нажмите Alt+F11, чтобы открыть редактор VBA.
    2. Вставьте код в модуль (Insert → Module).
    3. Вернитесь в Excel, поместите список значений для фильтра в E2:E10 (заголовок в E1).
    4. Запустите макрос (Alt+F8 → FilterByMultipleValues → Выполнить).
    ⚠️ Внимание: Макросы блокируются по умолчанию в файлах, полученных из интернета. Чтобы разрешить их выполнение, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы (не рекомендуется для недоверенных файлов).

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

    Даже опытные пользователи сталкиваются с проблемами при фильтрации. Вот топ-5 ошибок и их решения:

    Ошибка Причина Решение
    Фильтр не находит значения, которые есть в таблице Лишние пробелы или разный регистр ("москва" vs "Москва") Используйте СЖПРОБЕЛЫ и ПРОПИСН для очистки данных
    Расширенный фильтр удаляет исходные данные Не поставлена галочка "Скопировать результат в другое место" Всегда дублируйте таблицу перед фильтрацией
    Формула ФИЛЬТР возвращает #ИМЯ? Функция недоступна в вашей версии Excel Обновите Excel до 2021 или используйте ИНДЕКС+ПОИСКПОЗ
    Power Query не обновляет данные Отключено автоматическое обновление Включите в Параметры запроса → Свойства → Обновить каждые X минут
    Макрос выдаёт ошибку "1004" Неверно указан диапазон критериев Проверьте, что заголовки в таблице критериев совпадают с исходными

    🔹 Совет: Если фильтр работает медленно (особенно в таблицах >50К строк), преобразуйте данные в умную таблицу (Ctrl+T). Это ускорит автофильтр и сортировку.

    FAQ: Частые вопросы по фильтрации в Excel

    Можно ли фильтровать по цвету ячейки?

    Да, для этого:

    1. Примените Условное форматирование к данным (например, выделите красным все значения > 100).
    2. Включите Автофильтр и выберите Фильтр по цвету → Цвет заливки → Красный.

    🔹 Нюанс: Фильтр по цвету работает только если цвет применён через Условное форматирование или вручную. Цвета из импортированных данных (например, из PDF) могут не распознаваться.

    Как фильтровать данные по частичному совпадению (например, все регионы, содержащие "ск")?

    Используйте текстовые фильтры:

    1. Примените Автофильтр к столбцу.
    2. Выберите Текстовые фильтры → Содержит и введите "ск".

    Для Расширенного фильтра введите в критерии: =ск (звёздочки — подстановочные знаки).

    Почему после фильтрации в формулах появляется #ЗНАЧ!?

    Ошибка #ЗНАЧ! возникает, когда формула ссылается на скрытые строки. Решения:

    • Используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ с параметром 103 (игнорирует скрытые строки).
    • Замените обычные ссылки на ДВССЫЛ (например, =СУММ(ДВССЫЛ("A2:A" & СЧЁТЗ(A:A)))).
    Как сохранить отфильтрованные данные в новый файл?

    Способы:

    1. Копирование: Выделите видимые строки (Alt+;), скопируйте (Ctrl+C) и вставьте в новый файл.
    2. Power Query: Загрузите отфильтрованные данные в новую книгу (Закрыть и загрузить в → Новая книга).
    3. VBA: Используйте макрос для экспорта:
      Sub ExportFilteredData()
      

      Dim wsSource As Worksheet, wsNew As Worksheet

      Set wsSource = ActiveSheet

      wsSource.UsedRange.SpecialCells(xlCellTypeVisible).Copy

      Set wsNew = Workbooks.Add.Worksheets(1)

      wsNew.Paste

      wsNew.Columns.AutoFit

      End Sub

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

    Нет, стандартные фильтры Excel работают только в пределах одного листа. Альтернативы:

    • Объедините данные с нескольких листов в один с помощью Power Query (Данные → Получить данные → Из других источников → Книга).
    • Используйте 3D-ссылки в формулах (например, =СУММ(Лист1:Лист3!A2:A10)), но это не фильтрация, а агрегация.