Каждый раз вручную включать фильтры при открытии рабочего отчета в Excel — неэффективная трата времени. Гораздо удобнее настроить автоматическое применение автофильтра сразу при запуске файла. Это особенно полезно, если вы уже настроили другие элементы автоматизации, например, узнали как автоматически пронумеровать строки в Excel для создания идеальной структуры таблицы.
Пошаговая инструкция по настройке автофильтра через VBA
Поскольку стандартными инструментами интерфейса Excel нельзя заставить фильтр включаться сам по себе при старте, мы используем простой и безопасный макрос VBA.
Шаг 1. Откройте редактор макросов
Откройте ваш рабочий файл Excel и нажмите комбинацию клавиш Alt + F11, чтобы запустить встроенный редактор Visual Basic for Applications (VBA).
Шаг 2. Перейдите в модуль книги
В левой панели проекта (Project Explorer) найдите вашу книгу и дважды кликните по объекту ThisWorkbook (ЭтаКнига). Откроется пустое окно для ввода кода.
Шаг 3. Вставьте код автозапуска
Скопируйте и вставьте следующий код в открывшееся окно:
Private Sub Workbook_Open()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Лист1") ' Замените Лист1 на имя вашего листа
' Проверяем, включен ли автофильтр. Если нет — активируем его для первой строки
If Not ws.AutoFilterMode Then
ws.Range("A1").AutoFilter
End If
End Sub Этот макрос срабатывает автоматически в момент открытия файла, проверяет наличие фильтра на указанном листе и включает его, если он был отключен.
Шаг 4. Сохраните файл с поддержкой макросов
Нажмите Ctrl + S. Excel предупредит, что проект содержит макросы. В окне сохранения обязательно выберите тип файла Книга Excel с поддержкой макросов (*.xlsm).
Важно: Если вы сохраните файл в обычном формате .xlsx, весь написанный код сотрется, и автофильтр при следующем запуске не сработает.
Дополнительно: Автоматическая фильтрация по конкретному значению
Если вам нужно не просто включить стрелочки автофильтра, но и сразу отфильтровать данные (например, показать только строки со статусом «В работе»), измените код внутри процедуры на следующий:
Private Sub Workbook_Open()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Лист1")
' Сбрасываем старый фильтр и устанавливаем новый по первому столбцу (Field:=1)
ws.AutoFilterMode = False
ws.Range("A1").AutoFilter Field:=1, Criteria1:="В работе"
End Sub Для удобства ввода таких статусов рекомендуем предварительно изучить, как сделать выпадающий список в Excel: пошаговая инструкция.
Частые ошибки и устранение неполадок
- Ошибка: Макросы отключены системой безопасности. При открытии файла сверху появляется желтая плашка с предупреждением. Обязательно нажмите кнопку «Включить содержимое» (Enable Content), иначе автофильтр не применится.
- Ошибка: Subscript out of range (Ошибка 9). Это означает, что Excel не нашел лист с указанным именем. Проверьте строку
Sheets("Лист1")— имя в коде должно символ в символ совпадать с реальным названием вкладки. - Фильтр ломает формулы. Если в таблице есть сложные вычисления, автофильтр может скрыть важные промежуточные итоги. Чтобы избежать этого, полезно знать, как быстро выделить все ячейки с формулами в Excel для их проверки перед автоматизацией.
- Объединенные ячейки. Если в шапке таблицы есть объединенные ячейки, автофильтр может работать некорректно или выдавать ошибку. Избегайте объединения ячеек в строке заголовков.
Часто задаваемые вопросы
Будет ли работать автофильтр в обычном формате .xlsx?
Нет, обычный формат .xlsx не поддерживает сохранение макросов VBA. Вам обязательно нужно сохранить книгу в формате .xlsm (с поддержкой макросов) или .xlsb (двоичная книга).
Как отключить автофильтр при открытии, если он больше не нужен?
Откройте редактор VBA через Alt + F11, перейдите в модуль ThisWorkbook и просто удалите весь код внутри процедуры Workbook_Open или удалите саму процедуру.








