8.2. Фильтрация
Аппарат фильтрации позволяет выделить нужные данные среди имеющихся. Средства фильтрации доступны через меню Данные +Фильтр, которое вызывает вспомогательное меню (рис. 8.2-1).
П
ункты
меню означают следующее.
Автофильтр – назначение средств фильтрации на каждое поле данных таблицы. Если предварительно выделены определенные столбцы, средства автофильтрации будут назначены только им. Повторный выбор этого пункта отменяет режим Автофильтрации (галочка-пометка будет снята).
Показать все – отмена фильтра (предъявляются все данные).
Расширенный фильтр – вызов средств установки сложного фильтра.
Автофильтрация. Самым простым является использование автофильтра (пункт Автофильтр). При выборе этого пункта слева от него изображается галочка, а в заголовке каждого столбца появится кнопка-треугольник выбора фильтра для данного поля (рис. 8.2-2).
(Все)
(Первые 10 ...)
(Условия ...)
Иван
Олег
Петр
(Пустые)
(Непустые)
|
|
А |
В |
C |
D |
|
|
Имя
|
Товар |
Выручка |
Дата |
|
2 |
Петр |
стул |
10 |
1.01 |
|
|
Иван |
стол |
20 |
25.01 |
Рис. 8.2-2 Рис. 8.2-3
Щелчок по любой из кнопок выбора повлечет предъявление ниспадающего меню, содержащего список всех имеющихся значений поля. Например, нажатие на кнопку столбца Имя, вызовет меню (рис. 8.2-3), содержащее все значения, встречающиеся в столбце, отсортированные по алфавиту. В большой таблице их может оказаться сотни, что, конечно, сильно затрудняет поиск нужного элемента меню. Ускорить этот процесс можно нажав клавишу с первой буквой нужного слова. Меню правильно реагирует на такое действие, сразу перемещая нас на первую строку с указанной буквой. Если какая-то из кнопок была использована для назначения фильтра, треугольник в ней делается синего цвета (исходный цвет – черный).
Положим, в колонке Имя мы выбрали ключ Олег, а в колонке Товар – шкаф. Полученный результат изображен на рис. 8.2-4.
|
|
А |
В |
C |
D |
|
|
Имя
|
Товар |
Выручка |
Дата |
|
4 |
Олег |
шкаф |
30 |
10.02 |
|
11 |
Олег |
шкаф |
10 |
16.04 |
Рис. 8.2-4
Пункты, заключенные в скобки (рис. 8.2-3), выполняют функции:
(Все) – предъявляются все данные (фильтр по этому полю отменяется).
(Первые 10) – предъявляется подмножество (например, 10 элементов) данных, находящихся в начале/конце отфильтрованной таблицы.
(Условия ...) – вызываются средства задания более сложного фильтра.
(Пустые) – предъявляются строки, не содержащие данных в колонке.
(Непустые) – предъявляются только непустые строки в колонке.
Последние два пункта включаются в меню, если в колонке имеются незаполненные клетки.
Разъясним некоторые из перечисленных элементов подробнее.
Пункт Первые 10 позволяет выделить некоторое подмножество из имеющихся данных. Здесь можно задать любое (а не только 10) число наибольших/наименьших элементов списка или процентов от всего множества данных. Управление отбором осуществляется через интерфейс, изображенный на рис. 8.2-5. Назначение его элементов прокомментировано.

Рис. 8.2-5
Пункт Условия ... дает возможность организовать более сложный фильтр, нежели просто выбор одного из существующих значений. Положим, нужно найти все продажи, совершенные в первом квартале 2001г. На рис. 8.2-6 изображено окно задания такого фильтра для колонки Дата. Здесь установлено условие Дата>=1.1.01 И Дата<1.4.01, что позволит отобрать данные о продажах, происшедших с 1.1.2001 по 1.4.2001 (т.е. в январе, феврале и марте).
При задании ключа фильтрации могут использоваться символы шаблона * и ?. Их применение позволяет осуществлять поиск по не полностью заданному ключу. Положим, нам нужно отделить всех сотрудников, фамилии которых начинаются с букв “Пе”. Задание шаблона вида “Пе*” покажет нам все строки, содержащие фамилии Петр, Петров, Пешков, Петраков и др. Шаблон вида “?????” отделит всех сотрудников с фамилиями, состоящими строго из пяти букв. Шаблон “*цкий” – отфильтрует работников с фамилиями, оканчивающимися на “цкий” и произвольным числом предшествующих знаков.

Рис. 8.2-6
Другой пример. Пусть надо показать только продажи столов и стульев. Хотя в речи мы использовали союз И, здесь подразумевается логическая функция ИЛИ, а интерфейс Пользовательского автофильтра должен быть следующим (рис. 8.2-7).
Рис.
8.2-7
Очевидное ограничение инструмента Пользовательский автофильтр – это невозможность задать более двух условий на одну колонку одновременно и слабая возможность комбинировать сложные условия для разных колонок.
Расширенная фильтрация. Пункт Данные+Фильтр+Расширенный фильтр дает возможность задать сложный критерий отбора данных непосредственно в клетках рабочего листа без ограничения числа условий. Этот критерий должен содержать точные названия заголовков колонок (лучше создать их копированием), для которых формируется критерий, а под ними собственно условия фильтрации. Условия, находящиеся в одной строке, объединяются в фильтре логической функцией И, условия, находящиеся на отдельных строках – функцией ИЛИ. Допускается соединение условий И и ИЛИ в одном фильтре.
Положим, требуется отделить все продажи, состоявшиеся в марте месяце. Чтобы освободить место для условий, переместим сами данные ниже на три строки (рис. 8.2-8). Удобно, чтобы между областью условий и областью данных находилась пустая строка (здесь строка 3). Названия колонок и условия фильтрации введем в область А1:В2. Собственно сортировка осуществляется с помощью окна, показанного на рис. 8.2-9.
|
|
A |
B |
C |
D |
|
1 |
Дата |
Дата |
|
|
|
2 |
>=1.3.2001 |
<1.4.2001 |
|
|
|
3 |
|
|
|
|
|
4 |
Имя |
Товар |
Выручка |
Дата |
|
5 |
Петр |
стул |
10 |
1.01 |
|
|
|
|
|
|
Рис. 8.2-8
Здесь же, если нужно, можно указать и новое местоположение отфильтрованных данных (кнопка Скопировать результат в другое место и поле ввода Поместить результат в диапазон). Эти средства предоставляют возможность сформировать результат в другом месте книги с тем, чтобы обстоятельно его проанализировать, например, подвести итоги по отобранным данным и напечатать результат. При желании можно также заблокировать повторение строк с одинаковым значением ключа (флаг Только уникальные записи). Это, например, может оказаться полезным, если нужно построить список чего-либо, например, список сотрудников или перечень товаров.
В изображенном на рис. 8.2-9 окне Расширенный фильтр сформирован фильтр вида Дата>=1.3.2001 И Дата<1.4.2001. Результат фильтрации показан на рис. 8.2-10, где предъявлены данные, относящиеся только к марту месяцу.

Рис. 8.2-9
|
|
A |
B |
C |
D |
|
1 |
Дата |
Дата |
|
|
|
2 |
>=1.3.2001 |
<1.4.2001 |
|
|
|
3 |
|
|
|
|
|
4 |
Имя |
Товар |
Выручка |
Дата |
|
11 |
Петр |
стол |
60 |
2.03 |
|
12 |
Петр |
стол |
30 |
2.03 |
|
13 |
Олег |
стул |
40 |
21.03 |
|
14 |
Иван |
шкаф |
60 |
25.03 |
Рис. 8.2-10
Другой фильтр. Пусть требуется показать продажи столов и стульев в этот же период времени, т.е. сформировать условие вида
(Дата>=1.3.2001 И Дата<1.4.2001 И Товар=стол)
ИЛИ (Дата>=1.3.2001 И Дата<1.4.2001 И Товар=стул).
Результат показан на рис. 8.2-11 (даты в области условий повторены). Здесь Исходный диапазон: $A$5:$D$18 , а Диапазон условий: $A$1:$C$3 .
|
|
A |
B |
C |
D |
|
1 |
Дата |
Дата |
Товар |
|
|
2 |
>=1.3.2001 |
<1.4.2001 |
стол |
|
|
3 |
>=1.3.2001 |
<1.4.2001 |
стул |
|
|
4 |
|
|
|
|
|
5 |
Имя |
Товар |
Выручка |
Дата |
|
12 |
Петр |
стол |
60 |
2.03 |
|
13 |
Петр |
стол |
30 |
2.03 |
|
14 |
Олег |
стул |
40 |
21.03 |
Рис. 8.2-11
Еще фильтр. Нужно выявить продавцов-кандидатов на премирование. Пусть, это работники, имевшие выручку более 50 тыс. руб. или продавшие шкафы (положим, шкафы покупаются плохо).
|
|
A |
B |
C |
D |
|
1 |
Товар |
Выручка |
|
|
|
2 |
шкаф |
|
|
|
|
3 |
|
>50 |
|
|
|
4 |
|
|
|
|
|
5 |
Имя |
Товар |
Выручка |
Дата |
|
9 |
Олег |
шкаф |
30 |
10.02 |
|
12 |
Петр |
стол |
60 |
2.03 |
|
15 |
Иван |
шкаф |
60 |
25.03 |
|
16 |
Иван |
стул |
80 |
12.04 |
|
17 |
Петр |
шкаф |
10 |
10.04 |
|
18 |
Олег |
шкаф |
10 |
16.04 |
Рис. 8.2-12
Если Исходный диапазон задать прежним, а Диапазон условий – A1:B3, результат фильтрации будет таким, как показано на рис. 8.2-12. Здесь реализован фильтр Товар=Шкаф ИЛИ Выручка>50.
Отмена действия любого фильтра осуществляется выбором пункта меню Данные+Фильтр+Отобразить все.
Инструмент Расширенный фильтр позволяет использовать в качестве критерия ссылки на ячейки и формулы. Пусть нам нужно показать продажи на сумму больше средней в полтора раза. В клетку А2 помещаем выражение
A2=C5>1,5*СРЗНАЧ($C$5:$C$17),
где значение выручки для первой продажи исходной таблицы (клетка С5) сравнивается с найденным средним значением, умноженным на 1,5. Результат фильтрации показан на рис. 8.2-13.
|
|
A |
B |
C |
D |
|
1 |
Больше 1,5 средней |
|
| |
|
2 |
ЛОЖЬ |
|
|
|
|
3 |
|
|
|
|
|
4 |
Имя |
Товар |
Выручка |
Дата |
|
10 |
Олег |
стол |
50 |
25.02 |
|
11 |
Петр |
стол |
60 |
2.03 |
|
14 |
Иван |
шкаф |
60 |
25.3 |
|
15 |
Иван |
стул |
80 |
12.04 |
Рис. 8.2-13
Хотя в самой формуле сравнение происходит только с клеткой С5, после выполнения действий в окне Расширенный фильтр, оно будет распространено на весь диапазон данных. В Диапазон условий здесь включена область А1:А2, которая обязательно должна содержать заголовок, не совпадающий ни с каким из заголовков собственно данных, в том числе и даже пустую клетку (в нашем случае – слова Больше 1,5 средней). В клетке А2 может быть выведено слово ИСТИНА или ЛОЖЬ, в зависимости от того, каково значение ячейки С5 и на него не нужно обращать внимания.

1
3
1