Горизонтальная фильтрация в Microsoft Excel — это инструмент, который позволяет отображать только нужные строки данных на основе условий в заголовках столбцов. В отличие от вертикального фильтра (привычного многим автофильтра), горизонтальный работает со строками как с записями, а не со столбцами. Это особенно полезно, когда ваша таблица имеет структуру "свойство-значение" по строкам, а не по столбцам.
Например, если у вас таблица с месяцами по строкам и продуктами по столбцам, горизонтальный фильтр поможет быстро найти все строки, где продажи превысили 1000 единиц для конкретного товара. Или когда нужно отфильтровать данные по нескольким критериям одновременно — скажем, показать только те строки, где одновременно выполняются условия для столбцов Цена > 500 и Наличие = "Есть".
В этой статье мы разберём 5 способов реализации горизонтального фильтра — от стандартных инструментов Excel до формул и макросов. Вы узнаете, как:
- 🔹 Настроить автофильтр для работы со строками как с записями
- 🔹 Использовать расширенный фильтр для сложных условий
- 🔹 Применить функции
ФИЛЬТР()иПОИСКПОЗ()в динамических массивах - 🔹 Создать выпадающий список для удобной фильтрации
- 🔹 Автоматизировать процесс с помощью VBA
Все методы протестированы в Excel 2019–2026 и Microsoft 365. Если вы работаете в более ранних версиях (2016 или 2013), некоторые функции могут быть недоступны — об этом мы предупредим отдельно.
1. Стандартный автофильтр: как заставить его работать горизонтально
По умолчанию автофильтр в Excel применяется к столбцам. Но есть обходной путь, который позволяет фильтровать строки. Для этого нужно транспонировать данные или использовать специальную структуру таблицы.
Рассмотрим пример: у вас есть таблица с продажами по месяцам, где строки — это товары, а столбцы — месяцы. Чтобы отфильтровать строки (товары) по условию, например, показать только те, где продажи в январе превысили 200 единиц:
- Выделите диапазон данных вместе с заголовками.
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Теперь в выпадающем списке столбца
ЯнварьвыберитеЧисловые фильтры→Больше чем...и укажите значение200.
⚠️ Внимание: Этот метод работает только если ваши строки представляют собой записи (например, каждый товар — отдельная строка с атрибутами в столбцах). Если ваша таблица повернута на 90 градусов (строки = свойства, столбцы = записи), стандартный фильтр не подойдёт — читайте следующий раздел.
2. Расширенный фильтр для горизонтальной фильтрации
Расширенный фильтр — это мощный инструмент, который позволяет фильтровать данные по нескольким критериям одновременно, включая горизонтальную фильтрацию. Он особенно полезен, когда нужно:
- 📌 Отфильтровать данные по нескольким столбцам сразу (например,
Цена > 1000ИНаличие = "Да") - 📌 Скопировать отфильтрованные результаты в другое место листа
- 📌 Работать с нестандартными диапазонами (например, когда заголовки не в первой строке)
Пример настройки:
- Создайте таблицу с данными и диапазон критериев (обязательно с точно такими же заголовками, как в исходной таблице).
- Перейдите на вкладку
Данные→Расширенный фильтр. - В поле
Исходный диапазонукажите вашу таблицу (включая заголовки). - В поле
Диапазон условийвыберите ячейки с критериями. - Отметьте
Скопировать результат в другое место, если нужно вывести данные на другой лист.
| Исходная таблица | Диапазон критериев | Результат |
|---|---|---|
|
|
Только Товар2 |
|
|
Нет результатов |
⚠️ Внимание: Если вы используете Excel 2016 или старше, расширенный фильтр не поддерживает динамические массивы. В этом случае результаты фильтрации будут статичными — при изменении исходных данных их придётся запускать заново.
Скопируйте заголовки столбцов в отдельную область|Укажите критерии под заголовками (точные совпадения или условия)|Проверьте, что в критериях нет пустых строк|Выделите исходный диапазон вместе с заголовками-->
3. Функция ФИЛЬТР() для динамической горизонтальной фильтрации
В Excel 365 и Excel 2021 появилась революционная функция ФИЛЬТР(), которая позволяет создавать динамические фильтры без макросов. Она идеально подходит для горизонтальной фильтрации, так как может работать с условиями по строкам.
Синтаксис функции:
=ФИЛЬТР(массив; включать; [если_пусто])
Пример: отфильтруем строки, где значение в столбце B (например, "Цена") больше 1000, а в столбце C ("Наличие") равно "Да":
=ФИЛЬТР(A2:C10; (B2:B10>1000)*(C2:C10="Да"); "Нет данных")
Особенности работы:
- 🔢
массив— диапазон данных, который нужно отфильтровать (включая заголовки, если они нужны в результате). - 🔢
включать— условие фильтрации. Для нескольких условий используйте оператор*(логическое И) или+(логическое ИЛИ). - 🔢
[если_пусто]— значение, которое будет показано, если нет совпадений.
Функция ФИЛЬТР() автоматически обновляет результаты при изменении исходных данных — это её главное преимущество перед расширенным фильтром.
Как работает умножение условий?
В формуле (B2:B10>1000)*(C2:C10="Да") умножение преобразует логические значения ИСТИНА/ЛОЖЬ в 1/0. Таким образом, только строки, где оба условия выполняются (то есть произведение равно 1), попадают в результат.
4. Создание выпадающего списка для удобной фильтрации
Если вам нужно регулярно фильтровать данные по одним и тем же критериям, удобно создать выпадающий список с вариантами фильтрации. Это сэкономит время и уменьшит количество ошибок.
Инструкция по настройке:
- Создайте отдельную область для критериев фильтрации (например, в ячейках
E1:E3). - В ячейке
E1укажите заголовок столбца, по которому будет фильтрация (например, "Категория"). - В ячейке
E2создайте выпадающий список: перейдите на вкладкуДанные→Проверка данных→Список. - В поле
Источникукажите диапазон с уникальными значениями из вашего столбца (например,=УНИК(Б2:Б100)для динамического списка). - Используйте функцию
ФИЛЬТР()или расширенный фильтр, ссылаясь на ячейкуE2как на критерий.
Пример формулы с выпадающим списком:
=ФИЛЬТР(A2:C10; B2:B10=E2; "Нет данных")
⚠️ Внимание: Если в вашем столбце есть пустые ячейки или ошибки, функция УНИК() может их включить в список. Чтобы избежать этого, используйте конструкцию:
=ФИЛЬТР(УНИК(ЕСЛИОШИБКА(B2:B100;"")); УНИК(ЕСЛИОШИБКА(B2:B100;""))<>"")
5. Автоматизация с помощью VBA: макрос для горизонтального фильтра
Если вам нужно регулярно применять горизонтальный фильтр к большим объёмам данных, стоит рассмотреть автоматизацию через VBA. Макрос может:
- 🤖 Применять фильтр по нескольким критериям одновременно
- 🤖 Сохранять отфильтрованные данные в новый лист
- 🤖 Работать с нестандартными диапазонами (например, когда заголовки не в первой строке)
Пример макроса для фильтрации строк по условию в столбце B (значение больше 100):
Sub HorizontalFilter()
Dim rng As Range
Dim criteriaRange As Range
Dim outputRange As Range
' Указываем исходный диапазон (с заголовками)
Set rng = Range("A1:C100")
' Создаём диапазон критериев (например, столбец B > 100)
Set criteriaRange = Range("E1:E2")
criteriaRange.Cells(1, 1).Value = "Столбец B" ' Заголовок
criteriaRange.Cells(2, 1).Value = ">100" ' Условие
' Указываем, куда выводить результат (например, начиная с A102)
Set outputRange = Range("A102")
' Применяем расширенный фильтр
rng.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=criteriaRange, _
CopyToRange:=outputRange, _
Unique:=False
End Sub
Чтобы использовать этот макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert→Module). - Запустите макрос через
F5или создайте кнопку на листе.
⚠️ Внимание: Перед запуском макроса убедитесь, что:
- Исходный диапазон включает заголовки.
- Диапазон критериев (
E1:E2в примере) не пересекается с исходными данными. - В настройках Excel разрешено выполнение макросов (вкладка
Файл→Параметры→Центр управления безопасностью).
Сравнение методов: какой способ выбрать
Каждый из описанных методов имеет свои плюсы и минусы. Выбор зависит от ваших задач, версии Excel и уровня владения программой. Ниже — сравнительная таблица:
| Метод | Подходит для версий | Динамическое обновление | Сложность настройки | Когда использовать |
|---|---|---|---|---|
| Стандартный автофильтр | Все версии | Да | Низкая | Простые условия, строки как записи |
| Расширенный фильтр | Все версии | Нет (требует повторного запуска) | Средняя | Сложные условия, копирование результатов |
Функция ФИЛЬТР() |
Excel 365, 2021 | Да | Средняя | Динамические данные, сложные условия |
Выпадающий список + ФИЛЬТР() |
Excel 365, 2021 | Да | Высокая | Регулярная фильтрация по фиксированным критериям |
| VBA-макрос | Все версии | Да (привязка к событию) | Высокая | Автоматизация, большие объёмы данных |
Для большинства пользователей оптимальным решением будет комбинация расширенного фильтра (для статичных данных) и функции ФИЛЬТР() (для динамических). Если вы работаете в Excel 2016 или старше, придётся ограничиться расширенным фильтром или VBA.
FAQ: Частые вопросы по горизонтальному фильтру в Excel
Можно ли сделать горизонтальный фильтр в Excel Online?
В Excel Online доступны стандартный автофильтр и функция ФИЛЬТР(), но расширенный фильтр отсутствует. Если вам нужна сложная фильтрация, используйте десктопную версию или Excel для Windows/Mac.
Почему функция ФИЛЬТР() возвращает ошибку #ИМЯ?
Ошибка #ИМЯ? означает, что функция не распознаётся. Это происходит в версиях Excel старше 2021 или если у вас отключены динамические массивы. Проверьте:
- Версию Excel (
Файл→Учётная запись→Об Excel). - Настройки формул:
Файл→Параметры→Формулы→Расчёты с использованием динамических массивов.
Как отменить горизонтальный фильтр?
Способ зависит от метода фильтрации:
- Для стандартного автофильтра: нажмите
Данные→Фильтр(илиCtrl+Shift+L). - Для расширенного фильтра: удалите диапазон критериев или нажмите
Очиститьв настройках фильтра. - Для функции ФИЛЬТР(): удалите формулу или измените условие на
1=1(показать все строки).
Можно ли фильтровать строки по цвету ячейки?
Да, но не напрямую. Варианты:
- Используйте условное форматирование + расширенный фильтр по вспомогательному столбцу с формулой, проверяющей цвет (требуется VBA).
- В Excel 365 комбинируйте
ФИЛЬТР()с функциейПОЛУЧИТЬ.ЯЧЕЙКУ()(только для цветов, заданных условным форматированием).
Пример формулы для проверки красного фона (цветовой индекс 3):
=ФИЛЬТР(A2:C10; ПОЛУЧИТЬ.ЯЧЕЙКУ(38; B2:B10)=3; "Нет данных")
Как сохранить отфильтрованные данные в новый файл?
Самый надёжный способ:
- Примените фильтр (любым из описанных методов).
- Скопируйте видимые ячейки (
Alt+;→Ctrl+C). - Создайте новый файл (
Ctrl+N) и вставьте данные (Ctrl+V). - Сохраните файл (
F12).
Для автоматизации используйте VBA-макрос с методом Workbooks.Add и копированием отфильтрованного диапазона.