 
        
        2курс 2сем / 6
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ
ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
| ассистент | 
 | 
 | 
 | М. С. Иванова | 
| должность, уч. степень, звание | 
 | подпись, дата | 
 | инициалы, фамилия | 
| ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №6 | 
| ФИЛЬТРАЦИЯ ДАННЫХ СРЕДСТВАМИ VBA | 
| по курсу: ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ | 
| 
 | 
| 
 
 
 
 | 
РАБОТУ ВЫПОЛНИЛА
| СТУДЕНТКА ГР. | 4716 | 
 | 
 | 
 | С.А. Янышева | 
| 
 | 
 | 
 | подпись, дата | 
 | инициалы, фамилия | 
Санкт-Петербург
2019
Лабораторная работа № 6
ФИЛЬТРАЦИЯ ДАННЫХ СРЕДСТВАМИ VBA
Цель работы: получение практических навыков задания параметров автофильтрации исходных данных программными способами средствами VBA.
- Текст индивидуального задания 
Вариант 18
 Используемые
	диалоговые окна Используемые
	диалоговые окна
Рисунок 1 – Диалоговое окно
- Программные коды процедур 
Module1
| Sub ВыборкаДанныхПоФамилии() ' ' ВыборкаДанныхПоФамилии Макрос ' 
 ' ActiveSheet.Range("$A$1:$F$9").AutoFilter Field:=1, Criteria1:=Array( _ "Баранов", "Быков", "Рогачев"), Operator:=xlFilterValues End Sub | 
| Sub Очистка() ' ' Очистка Макрос ' 
 ' Range("F2:F9").Select With Selection.Font .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 End With With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub | 
Лист1
| Private Sub CommandButton1_Click() Call ЗаданиеФильтра End Sub | 
| Private Sub CommandButton11_Click() Call Очистка End Sub | 
| Private Sub CommandButton12_Click() Call СнятиеАвтофильтра End Sub | 
| Private Sub CommandButton2_Click() Call ФильтрУсловиеАфины End Sub | 
| Private Sub CommandButton3_Click() Call Два_Условия End Sub | 
| Private Sub CommandButton4_Click() Call ЗаданиеАвтофильраПоДвумСтобцам End Sub 
 | 
| Private Sub CommandButton5_Click() Call ЗаданиеФильтраПервые_10 End Sub 
 | 
| Private Sub CommandButton6_Click() Call ЗаданиеФильтраЦвет_10 End Sub | 
| Private Sub CommandButton7_Click() Call ФильтрацияПоМесяцуГода End Sub | 
| Private Sub CommandButton8_Click() Call ФильтрацияСортировкой End Sub | 
| Private Sub CommandButton9_Click() Call массив_критериев_задать End Sub | 
| Private Sub CommandButton10_Click() Call ПоискПоУсловию End Sub | 
| Private Sub ЗаданиеФильтра() Range("A1:F9").Select Selection.AutoFilter End Sub | 
| Sub ФильтрУсловиеАфины() Range("A1:F1").Select Selection.AutoFilter 
 Range("A1:F5").AutoFilter Field:=3, _ Criteria1:="=Афины", _ VisibleDropDown:=False End Sub | 
| Sub Два_Условия() 'Задание автофильтра Range("A1:F1").Select Selection.AutoFilter 'Задание значений параметров автофильтра Range("A1:F5").AutoFilter Field:=4, _ Criteria1:=">=25000", _ Operator:=xlAnd, _ Criteria2:="<=30000" 'Вывод сообщения MsgBox "Задали 2 условия на столбец 4" 
 End Sub | 
| Sub ЗаданиеАвтофильраПоДвумСтобцам() 'Задание параметров двух критериев автофильтра в одном столбце Range("A1:F9").AutoFilter Field:=4, _ Criteria1:=">=25000", _ Operator:=xlAnd, _ Criteria2:="<=30000" 'Вывод сообщения MsgBox "Задали 2 условия на столбец 4" 
 'Задание параметров дополнительного критерия автофильтра Range("A1:F9").AutoFilter Field:=3, _ Criteria1:="=Афины", _ VisibleDropDown:=False MsgBox "Задали условие на столбец 3" 
 'Снятие параметров автофильтра ActiveSheet.ShowAllData MsgBox "Снятие условий фильтрации" 
 End Sub | 
| Sub ЗаданиеФильтраПервые_10() Range("A1:F9").AutoFilter Field:=4, _ Criteria1:="2", _ Operator:=xlBottom10Items MsgBox "Отфильтровали две поездки с наименьшей стоимостью" '***************************************************** ActiveSheet.ShowAllData MsgBox "Снятие условий фильтрации" End Sub | 
| Sub ЗаданиеФильтраЦвет_10() Range("A1:F9").AutoFilter Field:=6, _ Criteria1:=vbRed, _ Operator:=xlFilterFontColor MsgBox "Отфильтровали столбец 6 по цвету шрифта (красный)" End Sub | 
| Sub ФильтрацияПоМесяцуГода() Range("A1:F9").AutoFilter Field:=5, _ Criteria1:=xlFilterAllDatesInPeriodDecember, _ Operator:=xlFilterDynamic MsgBox "Отфильтровали декабрьские поездки" '**************************************************** ActiveSheet.ShowAllData MsgBox "Сняли условия фильтрации" End Sub 
 | 
| Sub ФильтрацияСортировкой() ActiveSheet.Range("$A$1:$F$9").AutoFilter Field:=1, _ Criteria1:=Array("Баранов", "Быков", "Рогачев"), _ Operator:=xlFilterValues End Sub | 
| Sub массив_критериев_задать() Dim массив_критериев(1 To 3) массив_критериев(1) = "Баранов" массив_критериев(2) = "Быков" массив_критериев(3) = "Рогачев" ActiveSheet.Range("A1:F9").AutoFilter Field:=1, _ Criteria1:=массив_критериев(), _ Operator:=xlFilterValues End Sub | 
| Sub ПоискПоУсловию() Dim S As Range Dim SSS As Range Set SSS = Лист1.Range("F2:F9") 'Задание цикла поиска по условию For Each S In SSS If S.Value >= 7 Then 'Установка параметра цвета S.Interior.ColorIndex = 20 Else S.Interior.ColorIndex = xlColorIndexNone End If Next S 
 End Sub | 
| Sub автофильтр() 
 'Использование автофильтра для обычного диапазона 'Активизвция листа с именем «автофильтр» Worksheets("Лист1").Activate 
 'Вывод сообщения о том, сколько автофильтров установлено «количество/0» 'и заданных условиях фильтрации «количество/0» 
 MsgBox "Фильтр на листе установлен: " & ActiveSheet.AutoFilterMode & vbNewLine & _ "Условия фильтации на листе заданы: " & ActiveSheet.FilterMode '********************************************* 'Установка автофильтра с использованием метода AutoFilter объекта Range Range("A1:F9").AutoFilter 
 'Вывод сообщений об установке автофильтров MsgBox "Установили/сняли фильтр, условия отбора не задавали" 
 'Вывод сообщения о том, сколько автофильтров установлено «количество/0» 'и заданных условиях фильтрации «количество/0» MsgBox "Фильтр на листе установлен: " & ActiveSheet.AutoFilterMode & vbNewLine & _ "Условия фильтации на листе заданы: " & ActiveSheet.FilterMode '***************************************** Range("A1:F9").AutoFilter Field:=4, _ Criteria1:=">=25000", _ Operator:=xlAnd, _ Criteria2:="<=30000" 'Вывод сообщения о задании условий на столбец MsgBox "Задали 2 условия на столбец 4" 
 'Вывод сообщения о том, сколько автофильтров установлено «количество/0» 'и заданных условиях фильтрации «количество/0» MsgBox "Фильтр на листе установлен: " & ActiveSheet.AutoFilterMode & vbNewLine & _ "Условия фильтации на листе заданы: " & ActiveSheet.FilterMode End Sub | 
| Sub СнятиеАвтофильтра() Range("A1:F9").AutoFilter Field:=4, _ Criteria1:="2", _ Operator:=xlBottom10Items MsgBox "Отфильтровали 2 поездки с наименьшей стоимостью" '*********************************************** 'Снятие всех фильтров ActiveSheet.ShowAllData 
 'Вывод сообщения о снятии условий фильтрации MsgBox "Сняли условия фильтрации" 
 End Sub | 
- Полученные результаты 
Для удобства использования фильтров были созданы кнопки. В результате нажатия на кнопку «Добавить/убрать фильтр» в заголовках полей появятся кнопки раскрывающихся списков (Рисунок 2)
 Рисунок
2 – Кнопки раскрывающихся списков
Рисунок
2 – Кнопки раскрывающихся списков
 Нажав
на кнопку «Автофильр по двум стобцам»
вначале происходит фильтрация таблицы
по столбцу «Сумма» (условие >=25000 и
<=30000) рисунок 3. Далее происходит
фильтрация по третьему столбцу
(Направление «Афины») рисунок 4. Процедура
заканчивается снятием условий фильтрации
рисунок 5.
Нажав
на кнопку «Автофильр по двум стобцам»
вначале происходит фильтрация таблицы
по столбцу «Сумма» (условие >=25000 и
<=30000) рисунок 3. Далее происходит
фильтрация по третьему столбцу
(Направление «Афины») рисунок 4. Процедура
заканчивается снятием условий фильтрации
рисунок 5.
Рисунок 3 – Фильтрация по столбцу сумма
 Рисунок
4 – Фильтрация по столбцу направление
Рисунок
4 – Фильтрация по столбцу направление
 
Рисунок 5 – Снятие условий фильтрация
 В
столбце «Дней» текст в нужных нам ячейках
сделали красным рисунок 6. Нажав кнопку
«Фильтр по красному цвету» произошла
фильтрация таблицы, результат на рисунке
7.
В
столбце «Дней» текст в нужных нам ячейках
сделали красным рисунок 6. Нажав кнопку
«Фильтр по красному цвету» произошла
фильтрация таблицы, результат на рисунке
7.
Рисунок 6 – Смена цвета в нужных ячейках
 
Рисунок 7 – Результат фильтрации по красному цвету
Нажав на кнопку «Поиск по условию» в столбце «Дней» выделились ячейки с условием >=7 (рисунок 8). Очистка этих ячеек осуществляется нажатием кнопки «Очистка заливки и цвета текста», результат продемонстрирован на рисунке 9.
 Рисунок
8 – Выделенные ячейки
Рисунок
8 – Выделенные ячейки
 Рисунок
9 – Очистка столбца «Дней»
Рисунок
9 – Очистка столбца «Дней»
- Вывод 
Я получила практические навыки задания параметров автофильтрации исходных данных программными способами средствами VBA. Научилась фильтровать данные по заранее заданным параметрам и убирать фильтры.
- Список используемых источников 
- Уокенбах Д. Exel 2016. Библия пользователя / Д. Уокенбах. – М.:Вильямс, – 2018. – 1040 с. 
- Аграновский, А. В. Обработка данных средствами электронных таблиц Microsoft Excel / А.В. Аграновский, Д.М. Ильинская, Е.Л. Турнецкая // Методические указания по выполнению лабораторных работ по курсу «Информационные системы и технологии». – СПб.: ГУАП. – 2016. – 55 с. 
- Функции Excel [Электронный ресурс] 
URL: https://support.office.com/ru-ru/article/Функции-Excel-по-категориям-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb
