Найти тему

📌 Vba Excel: фильтрация данных на основе значения, выбранного из выпадающего списка

Всем привет! 👋

Сегодня разбираем практический пример: как фильтровать данные в зависимости от заданного критерия.

Vba Excel: фильтрация данных на основе значения, выбранного из выпадающего списка
Vba Excel: фильтрация данных на основе значения, выбранного из выпадающего списка

📢 Файл с исходным кодом размещен в конце статьи 🔽

-3
-4

▶️ Разбираем решение

В модуль листа помещаем следующий код

Данный код отслеживает изменения в рабочем листе Excel и реагирует на изменение ячейки B2. Если значение ячейки B2 изменено, вызывается процедура 'showIf'
Данный код отслеживает изменения в рабочем листе Excel и реагирует на изменение ячейки B2. Если значение ячейки B2 изменено, вызывается процедура 'showIf'

showIf представляет собой макрос выполняющий фильтрацию строк в Excel на основе заданного критерия:

Этот макрос скроет и отобразит строку в столбце A в зависимости от заданного критерия, фильтрации данных
Этот макрос скроет и отобразит строку в столбце A в зависимости от заданного критерия, фильтрации данных

🔘 Краткое описание кода:

🔹 Создаем переменные: colA (диапазон для столбца A), found (найденные строки), cnt (количество строк, соответствующий критерию) и frow (первая строка, критерий).

🔹 Устанавливаем параметр Application.ScreenUpdating в False, чтобы обеспечить обновление экрана и повышение производительности.

🔹 Устанавливаем диапазон colA, который представляет собой весь столбец A на активном листе.

🔹 Если критерии непустые:

  • Находим первую строку соответствующую критерию с помощью функции Match;
  • Подсчитываем количество строк, соответствующих критерию, с помощью функции CountIf;
  • Set found = Union(Range("A1:A4"), colA(frow).Resize(cnt, 1)) - определяем видимый диапазон;
  • Скрываем строки в столбце A с помощью свойства EntireRow.Hidden.

🔹 Если критерий пуст все строки в столбце становятся видимыми, а позиция прокрутки окна составляется на первую строку.

🔹 Application.ScreenUpdating снова включает обновления экрана

▶️ Дополнительные опции

Для отображения всех строк на листе, включая ранее скрытые строки добавим макрос:

-7

Отображение всех строк (кроме пустых) можно выполнить следующим образом:

-8

▶️ Тестируем результат

-9

🎥 О том как работает макрос продемонстрируем на видео примере:

-10
-11

СКАЧАТЬ ПРИМЕР