Всем привет! 👋
Сегодня разбираем практический пример: как фильтровать данные в зависимости от заданного критерия.
📢 Файл с исходным кодом размещен в конце статьи 🔽
▶️ Разбираем решение
В модуль листа помещаем следующий код
showIf представляет собой макрос выполняющий фильтрацию строк в Excel на основе заданного критерия:
🔘 Краткое описание кода:
🔹 Создаем переменные: 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 снова включает обновления экрана
▶️ Дополнительные опции
Для отображения всех строк на листе, включая ранее скрытые строки добавим макрос:
Отображение всех строк (кроме пустых) можно выполнить следующим образом:
▶️ Тестируем результат
🎥 О том как работает макрос продемонстрируем на видео примере: