Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Автоматизация операций сортировки и фильтрации




На листе «Сортировка по столбцу» проводится сортировка базы данных по заданному столбцу. Общение пользователя с ИС происходит посредством диалогового окна. При нажатии кнопки «Сортировка по столбцу» на экран выводится следующее диалоговое окно:

Рис. 2.1. Диалоговое окно «Сортировка по столбцу».

Пользователь вводит название столбца для сортировки и нажимает клавишу OK. Данные в таблице сортируются в порядке возрастания по указанному столбцу. После этого данные в таблице можно отсортировать ещё раз, или сбросить результаты сортировки, нажав на кнопку «Очистить результаты сортировки».

Программный код, запускающий диалоговое окно и выполняющий сортировку приведён в Приложении Б.

На листе «Сортировка по трём полям» можно провести сортировку исходной таблицы по трём полям: Дата подачи заявки, Место подачи заявки, Срок исполнения в порядке возрастания. Программный код, реализующий эту сортировку следующий:

Sub полясортировка()

Range("A2:I41").Sort _

Key1:=Range("E2"), Order1:=xlAscending, _

Key2:=Range("F2"), Order2:=xlAscending, _

Key3:=Range("G2"), Order3:=xlAscending, _

Header:=xlGuess, OrderCustom:=6, MatchCase:=False, Orientation:= _

xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _

DataOption3:=xlSortNormal

End Sub

После выполнения сортировки можно очистить результаты сортировки, нажав на кнопку «Очистка результатов сортировки». Очистка результатов сортировки производится копированием на лист исходной таблицы из листа «База данных»:

Sub ОчисткаСортировкиПоТрёмПолям()

Worksheets("База данных").Range("A2:I41").Copy _

Worksheets("Сортировка по трём полям").Range("A2:I41")

End Sub

На листе «Автофильтр1» расположены кнопки для включения/выключения различных фильтров.

Рис. 2.2. Функциональные кнопки, расположенные на листе «Автофильтр1».

Кнопка «Запуск и отключение Автофильтра для всей БД» включает и отключает автофильтр для всей таблицы данных. Исходный код соответствующего макроса следующий:

Sub АвтвсябД()

Range("A1:I41").Select 'создание объекта Selection на основе объекта Range

Selection.AutoFilter 'свойство AutoFilter объекта Selection

End Sub

Кнопка «Запуск и отключение Автофильтра для трёх полей» включает/отключает автофильтр для столбцов Услуга, Дата подачи заявки, Место подачи заявки. Исходный код макроса следующий:

Sub Автзадусл()

Range("D1:F41").Select 'создание объекта Selection на основе объекта Range

Selection.AutoFilter 'свойство AutoFilter объекта Selection

End Sub

Кнопка «Фильтрация БД по заданному условию» включает фильтр для исходной таблицы по заданному условию. Условия фильтрации следующие:

Рис. 2.3. Условия фильтрации базы данных на листе «Автофильтр1».

Результаты выполнения фильтра приведены ниже, на рисунке приведены только три столбца:

Рис. 2.4. Результаты фильтрации базы данных по заданному условию на листе «Автофильтр1».

Исходный код реализации фильтра по заданному условию следующий:

Sub Автпоусл()

Range("A1:I41").AutoFilter Field:=1, Criteria1:=">Г"

Range("A1:I41").AutoFilter Field:=4, Criteria1:="Социальная карта"

Range("A1:I41").AutoFilter Field:=5, Criteria1:=">2011-12-5"

End Sub

Лист «Автофильтр2» так же, как и лист «Автофильтр1» содержит различные фильтры для анализа БД.

Рис. 2.5. Функциональные кнопки, расположенные на листе «Автофильтр2».

Кнопка «Запуск и отключение Автофильтра для всей БД» работает также, как и на листе «Автофильтр1». Кнопка «Запуск и отключение автофильтра для четырёх полей» включает/выключает автофильтр для столбцов Адрес, Услуга, Дата подачи заявки, Место подачи заявки.

Кнопка «Фильтрация БД по заданному условию» включает фильтр для исходной таблицы по заданному условию. Условия фильтрации следующие:

Рис. 2.6. Условия фильтрации базы данных на листе «Автофильтр2».

Результаты выполнения фильтра приведены ниже, на рисунке приведены четыре столбца:

Рис. 2.7. Результаты фильтрации базы данных по заданному условию на листе «Автофильтр2».

Исходный код реализации фильтра по заданному условию следующий:

Sub Автпоусл2()

Range("A1:I41").AutoFilter Field:=4, Criteria1:="=Получение паспорта"

Range("A1:I41").AutoFilter Field:=5, Criteria1:=">2011-12-5", _

Operator:=xlAnd, Criteria2:="<2011-12-20"

Range("A1:I41").AutoFilter Field:=6, Criteria1:="=г.Брянск"

End Sub

Для создания автофильтра используется свойство AutoFilter объекта Range. В поле Field указывается номер столбца объекта Range, в поле Criteria1 указывается условие фильтрации. При совместном использовании полей Criteria1 и Criteria2 – в них задаётся диапазон искомых значений.

На листе «Расширенный фильтр1» проводится фильтрация базы данных по четырём полям. Для выполнения фильтрации нужно нажать на кнопку «Запуск расширенного фильтра по заданному условию». Условия для фильтрации берутся из следующей таблицы:

Рис. 2.8. Условия фильтрации на листе «Расширенный фильтр1».

Результаты выполнения фильтра приведены ниже, на рисунке приведены четыре столбца:

Рис. 2.9. Результаты фильтрации базы данных на листе «Расширенный фильтр1».

Исходный код реализации фильтра по условию из таблицы следующий:

Sub Расширусл()

Range("A1:I41").AdvancedFilter Action:=xlFilterInPlace, _

CriteriaRange:=Range("A48:D49") ', Unique:=True

End Sub

Для создания автофильтра используется свойство AdvancedFilter объекта Range. Параметр CriteriaRange указывает на таблицу, в которой находится условие для фильтрации. В нашем случае таблица с условиями задаётся диапазоном A48:D49. Следует особо отметить, что при изменении условий фильтрации в ячейках, заданных диапазоном A48:D49, изменятся результаты работы фильтра без изменения программного кода, транслируемого при нажатии кнопки «Запуск расширенного фильтра по заданному условию».

Также на вкладке «Расширенны фильтр1» расположена кнопка «Отображение всей БД». Эта кнопка позволяет отключить режим фильтра и вернуться к режиму показу всей базы данных. Программный код соответствующего макроса следующий:

Sub ВсяБД()

Range("A1:I41").Select 'создание объекта Selection на основе объекта Range

If ActiveSheet.FilterMode Then 'проверка включен ли фильтр

ActiveSheet.ShowAllData 'если фильтр включен, выключаем его

End If

End Sub

На листе «Расширенный фильтр2» реализуется другой фильтр для базы данных на основе свойства AdvancedFilter. Условия для фильтрации берутся из следующей таблицы:

Рис. 2.10. Условия фильтрации на листе «Расширенный фильтр2».

Результаты выполнения фильтра приведены ниже, на рисунке приведены три столбца:

Рис. 2.11. Результаты фильтрации базы данных на листе «Расширенный фильтр1».

Реализация фильтра по условию из таблицы аналогична реализации на листе «Расширенный фильтр1». Отключение результатов фильтрации также происходит при нажатии кнопки «Отображение всей БД». При изменении условий фильтрации в таблице A45:C46 результаты фильтрации тоже изменятся в соответствии с новыми условиями.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...