Почему стандартный фильтр не всегда удобен?
Вы когда-нибудь пытались найти в таблице сразу несколько категорий товаров, городов или статусов заказов? Стандартный автофильтр в Microsoft Excel позволяет выбрать только одно значение за раз — а если вам нужно отобразить данные по Мск, СПб и Екатеринбургу одновременно? Или выгрузить все заказы со статусами "Оплачен", "В обработке" и "Отгружен"?
В этой статье вы узнаете 5 проверенных способов фильтрации нескольких значений — от простых до продвинутых. Мы разберём:
- 🔍 Как использовать автофильтр с выбором нескольких элементов (да, это возможно!)
- 📊 Расширенный фильтр — скрытый инструмент для сложных условий
- 📝 Фильтрация по формулам (включая
ФИЛЬТР()в новых версиях) - 🔄 Power Query для динамической фильтрации больших массивов
- 🤖 Macros/VBA — автоматизация для повторяющихся задач
Каждый метод проиллюстрирован скриншотами (в текстовом формате) и примерами из реальных задач. Выберите подходящий вам уровень сложности и приступайте!
Способ 1: Автофильтр с выбором нескольких значений (Excel 2013+)
Мало кто знает, но в современных версиях Excel автофильтр умеет выбирать несколько значений без расширенных инструментов. Вот как это работает:
- Выделите заголовок столбца, по которому нужно фильтровать (например, "Город").
- Нажмите
Данные → Фильтр(илиCtrl+Shift+L). - Кликните по стрелке фильтра в заголовке столбца.
- Снимите галочку с "(Выделить все)".
- Отметьте галочками нужные значения (например, "Москва", "Санкт-Петербург", "Казань").
- Нажмите
ОК.
Важный нюанс: в Excel 2010 и старше этот метод работает только для текста. Для чисел или дат придётся использовать расширенный фильтр (см. следующий раздел).
Убедитесь, что в столбце нет пустых ячеек в начале
Проверьте отсутствие скрытых символов (пробелов, переносов)
Преобразуйте данные в таблицу (Ctrl+T) для удобства
Отсортируйте значения для быстрого поиска в списке-->
| Город | Продажи, руб | Статус |
|---|---|---|
| Москва | 150 000 | Оплачен |
| Санкт-Петербург | 95 000 | В обработке |
| Казань | 72 000 | Отгружен |
| Новосибирск | 110 000 | Оплачен |
| Екатеринбург | 88 000 | Отменён |
В этом примере автофильтр по столбцу "Город" с выбором "Москва", "Санкт-Петербург" и "Казань" покажет только первые 3 строки.
⚠️ Внимание: Если в вашем Excel при выборе нескольких значений фильтр сбрасывается, проверьте настройки региональных стандартов. В некоторых локализациях разделителем служит;вместо,что может ломать логику фильтра.
Способ 2: Расширенный фильтр — для сложных условий
Когда нужно отфильтровать данные по нескольким критериям одновременно (например, "Город = Москва ИЛИ Санкт-Петербург" И "Статус = Оплачен"), на помощь приходит расширенный фильтр.
Алгоритм действий:
- Создайте диапазон условий над или рядом с вашими данными. Например:
A1: Город | B1: Статус
A2: Москва | B2: Оплачен
A3: OR | B3:
A4: Санкт-Петербург | B4: Оплачен
- Выделите исходные данные (включая заголовки).
- Перейдите в
Данные → Сортировка и фильтр → Расширенный фильтр. - В поле "Исходный диапазон" укажите вашу таблицу (например,
$A$6:$C$10). - В поле "Диапазон условий" укажите ячейки с критериями (например,
$A$1:$B$4). - Выберите "Фильтровать список на месте" и нажмите
ОК.
Критичный момент: оператор "OR" должен занимать отдельную строку под условиями, а не писаться в той же ячейке. В противном случае Excel воспримет это как текст, а не как логический оператор.
Что делать если расширенный фильтр не работает?
Проверьте, чтобы диапазон условий включал заголовки столбцов (они должны совпадать с заголовками исходных данных).
Убедитесь, что в критериях нет опечаток (например, "Санкт-Питербург" вместо "Санкт-Петербург").
Если используете "OR", каждая альтернатива должна быть на отдельной строке.
Для числовых критериев используйте формат ячеек "Общий", а не "Текстовый".
| Диапазон условий | Результат фильтрации |
|---|---|
| Город = Москва Статус = Оплачен | 1 строка (Москва, 150 000, Оплачен) |
| Город = Москва OR Санкт-Петербург Статус = Оплачен | 2 строки (Москва и СПб с статусом "Оплачен") |
| Продажи > 100 000 Статус = Отгружен OR В обработке | 1 строка (СПб, 95 000, В обработке) |
⚠️ Внимание: Расширенный фильтр не работает с объединёнными ячейками в исходных данных. Если у вас есть слияния, сначала разъедините ячейки через Главная → Объединить и центрировать.
Способ 3: Фильтрация по формулам (ФИЛЬТР, ФИЛЬТРД, ИНДЕКС+ПОИСКПОЗ)
Для пользователей Excel 365 и Excel 2021 доступна революционная функция ФИЛЬТР(), которая позволяет отображать несколько значений динамически.
Пример формулы для фильтрации городов "Москва" и "Санкт-Петербург":
=ФИЛЬТР(A2:C10; (A2:A10="Москва")+(A2:A10="Санкт-Петербург"); "Нет данных")
Для более сложных условий используйте комбинацию функций:
=ФИЛЬТР(A2:C10;
((A2:A10="Москва")+(A2:A10="Санкт-Петербург")) *
((C2:C10="Оплачен")+(C2:C10="В обработке"));
"Нет подходящих записей")
Если у вас старая версия Excel, воспользуйтесь альтернативой:
=ИНДЕКС($A$2:$C$10;
ПОИСКПОЗ(1;
(--($A$2:$A$10="Москва"))+
(--($A$2:$A$10="Санкт-Петербург"));
0);
{1;2;3})
Важно: эту формулу нужно вводить как массив (завершите ввод Ctrl+Shift+Enter в Excel 2019 и старше).
Способ 4: Power Query для динамической фильтрации
Power Query (или "Запросы и подключения" в новых версиях) — это инструмент ETL (Extract-Transform-Load), который позволяет фильтровать данные на этапе загрузки. Преимущество: фильтры сохраняются и обновляются автоматически при изменении исходных данных.
Пошаговая инструкция:
- Выделите вашу таблицу и нажмите
Данные → Из таблицы/диапазона(в Excel 2016+). - В открывшемся редакторе Power Query найдите столбец, по которому нужно фильтровать (например, "Город").
- Кликните по стрелке в заголовке столбца и снимите галочки со всех значений, кроме нужных (например, оставьте только "Москва" и "Санкт-Петербург").
- Нажмите
ОК, затемГлавная → Закрыть и загрузить.
Теперь ваши данные отфильтрованы, и фильтр будет применён автоматически при обновлении запроса (Данные → Обновить все).
Для сложных условий используйте язык M в редакторе Power Query:
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
ФильтрГорода = Table.SelectRows(Источник, each ([Город] = "Москва" or [Город] = "Санкт-Петербург"))
in
ФильтрГорода
Способ 5: Автоматизация через VBA (для повторяющихся задач)
Если вам приходится фильтровать одни и те же значения ежедневно, имеет смысл записать макрос. Например, этот код фильтрует столбец A по значениям "Москва" и "Санкт-Петербург":
Sub FilterMultipleValues()
Dim ws As Worksheet
Set ws = ActiveSheet
' Очищаем предыдущие фильтры
If ws.AutoFilterMode Then ws.AutoFilterMode = False
' Применяем фильтр
With ws.Range("A1:C10") ' Укажите ваш диапазон
.AutoFilter Field:=1, Criteria1:="Москва", Operator:=xlFilterValues, Criteria2:="Санкт-Петербург"
End With
End Sub
Чтобы использовать этот макрос:
- Нажмите
Alt+F11для открытия редактора VBA. - Вставьте код в новый модуль (
Insert → Module). - Закройте редактор и назначьте макрос на кнопку или сочетание клавиш (
Alt+F8 → Назначить макрос).
Продвинутый вариант: сохраните список фильтруемых значений в отдельном листе, а макрос пусть считывает их динамически:
Sub DynamicFilter()
Dim filterValues() As String
filterValues = Array("Москва", "Санкт-Петербург", "Казань") ' Или считывайте из ячеек
ActiveSheet.Range("A1:C10").AutoFilter Field:=1, Criteria1:=filterValues, Operator:=xlFilterValues
End Sub
⚠️ Внимание: Макросы работают только в файлах с расширением.xlsm. Если вы сохраните файл как.xlsx, код VBA будет утерян. Также убедитесь, что в настройках безопасности разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью).
Сравнение методов: какой выбрать?
Каждый способ фильтрации нескольких значений имеет свои плюсы и минусы. Вот сравнительная таблица для помощи в выборе:
| Метод | Сложность | Динамичность | Подходит для больших данных | Требует знаний |
|---|---|---|---|---|
| Автофильтр (несколько значений) | ⭐ | Да | Нет (до 10 000 строк) | Базовые навыки Excel |
| Расширенный фильтр | ⭐⭐ | Нет (статичный) | Да (до 1 млн строк) | Знание синтаксиса условий |
| Функция ФИЛЬТР() | ⭐⭐⭐ | Да | Да | Excel 365/2021, знание формул |
| Power Query | ⭐⭐⭐ | Да | Да (миллионы строк) | Базовое понимание ETL |
| VBA/Macros | ⭐⭐⭐⭐ | Да (при правильной настройке) | Да | Знание основ VBA |
Для разовых задач подойдёт автофильтр или расширенный фильтр. Для ежедневных отчётов лучше освоить Power Query или ФИЛЬТР(). Если вам нужно автоматизировать рутину — изучите VBA.
Частые ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с проблемами при фильтрации нескольких значений. Вот TOP-5 ошибок и их решения:
- 🚫 Фильтр не применяется: проверьте, что в диапазоне нет скрытых строк или объединённых ячеек. Также убедитесь, что данные в столбце имеют одинаковый формат (например, не смешиваются текст и числа).
- 🚫 Расширенный фильтр возвращает пустой результат: чаще всего это происходит из-за несовпадения заголовков в диапазоне условий и исходных данных. Также проверьте регистр (Excel чувствителен к "Москва" vs "москва").
- 🚫 Формула ФИЛЬТР() выдаёт #ИМЯ?: эта функция доступна только в Excel 365 и Excel 2021. Для старых версий используйте
ИНДЕКС+ПОИСКПОЗ. - 🚫 Power Query не обновляет данные: убедитесь, что в настройках запроса включено автоматическое обновление (
Свойства → Обновить при открытии файла). - 🚫 Макрос не работает: проверьте, что в коде правильно указан диапазон (например,
Range("A1:C10")вместоRange("A:C"), если данные не во всём столбце). Также убедитесь, что макросы разрешены в настройках безопасности.
Если ни один из методов не сработал, попробуйте преобразовать данные в таблицу (Ctrl+T). Таблицы Excel часто лучше обрабатывают фильтры, особенно при работе с большими массивами.
FAQ: Ответы на популярные вопросы
Можно ли отфильтровать несколько значений в Excel Online?
Да, но с ограничениями. В Excel Online доступен стандартный автофильтр с выбором нескольких значений (как в способе 1), однако расширенный фильтр и Power Query отсутствуют. Функция ФИЛЬТР() работает в Excel Online, если у вас подписка Microsoft 365.
Как отфильтровать данные по нескольким значениям в Google Sheets?
В Google Таблицах алгоритм аналогичен Excel:
- Выделите данные и нажмите
Данные → Создать фильтр. - В фильтре столбца снимите галочку "(Все)" и отметьте нужные значения.
- Для сложных условий используйте функцию
=FILTER(A2:C10; REGEXMATCH(A2:A10; "Москва|Санкт-Петербург")).
Также в Google Sheets есть аналог Power Query — инструмент Запросы (Данные → Запросы).
Почему при фильтрации пропадают некоторые строки?
Это происходит из-за:
- 🔹 Скрытых строк: фильтр применяется только к видимым данным. Покажите все строки (
Главная → Формат → Скрыть/отобразить → Отобразить строки). - 🔹 Ошибок в данных: если в ячейке ошибка (#Н/Д, #ЗНАЧ!), строка может исключаться из фильтра. Используйте
=ЕОШИБКА()для проверки. - 🔹 Несовпадения форматов: например, число "1000" и текст "1000" считаются разными значениями.
Как сохранить отфильтрованные данные в новый лист?
Есть 3 способа:
- Копирование видимых ячеек:
- Примените фильтр.
- Выделите видимые строки (
Alt+;). - Скопируйте (
Ctrl+C) и вставьте на новый лист (Ctrl+V).
- Расширенный фильтр: в настройках выберите "Скопировать результат в другое место" и укажите целевой диапазон.
- Power Query: после фильтрации нажмите
Главная → Закрыть и загрузить в...и выберите "Новый лист".
Можно ли фильтровать по нескольким значениям в сводной таблице?
Да, но с оговорками:
- 📌 В фильтре страниц сводной таблицы можно выбрать несколько элементов (аналогично автофильтру).
- 📌 Для фильтрации по нескольким полям используйте нарезки (
Вставка → Нарезка). В нарезке можно выбрать несколько значений с зажатой клавишейCtrl. - 📌 В Excel 2013+ доступен временная шкала для фильтрации дат по нескольким периодам.
Если нужна сложная логика (например, "Город = Москва ИЛИ Санкт-Петербург И Статус = Оплачен"), создайте вычисляемое поле в сводной таблице.