Как сделать фильтр в сводной таблице excel

Добавил пользователь Валентин П.
Обновлено: 10.09.2024

В прошлом уроке мы познакомились со сводными таблицами в Excel, научились создавать их, а также отвечать с их помощью на самые различные вопросы применительно к исследуемым данным. Сегодня мы продолжим знакомство со сводными таблицами – научимся сведению данных, использованию срезов и фильтров, а также построению сводных диаграмм в Excel. Итак, поехали!

Сведение данных в Excel

Изменение строк

  1. Щелкните по любому полю в области Строки и перетащите его за пределы этой области. Поле исчезнет.
  2. Перетащите новое поле из списка полей в область Строки. В нашем примере мы воспользуемся полем Месяц.
  3. Сводная таблица будет скорректирована под новые данные. Теперь в ней отображаются общие суммы продаж по месяцам.

Добавление столбца

До настоящего момента в нашей сводной таблице отображался только один столбец. Чтобы отобразить несколько столбцов, необходимо добавить нужное поле в область Колонны.

Фильтры

Иногда необходимо сфокусироваться на каком-то определенном сегменте данных. Фильтры могут быть использованы для того, чтобы сузить количество данных, отображаемых в сводной таблице Excel, позволяя видеть только необходимую информацию.

Добавление фильтра

В следующем примере мы применим фильтр к продавцам, чтобы посмотреть, каким образом они влияют на общую сумму продаж.

Срезы

Срезы дополнительно упрощают фильтрацию в сводных таблицх Excel. По своей сути срезы являются фильтрами, но их гораздо проще использовать, что позволяет еще быстрее и удобнее обрабатывать данные. Если Вы часто фильтруете информацию в сводных таблицах Excel, то выгоднее использовать срезы вместо фильтров.

Добавление среза

  1. Выделите любую ячейку сводной таблицы.
  2. На вкладке Анализ щелкните команду Вставить срез.
  3. Появится диалоговое окно Вставка срезов. Выберите необходимое поле. В нашем примере мы выберем поле Продавец, а затем нажмем OK.
  4. Рядом со сводной таблицей появится срез. Каждый выбранный элемент будет выделен голубым цветом. В следующем примере срез содержит список всех продавцов, и шесть из них в текущий момент выбраны.
  5. При использовании срезов, собственно как и фильтров, в сводной таблице отображаются только выделенные элементы. Если Вы выделяете или снимаете выделение с элементов среза, изменения мгновенно отражаются в сводной таблице. Попробуйте выделить несколько элементов, чтобы увидеть, каким образом они влияют на сводную таблицу. Нажмите и удерживайте клавишу Ctrl на клавиатуре, чтобы выделить несколько элементов среза.

Вы можете щелкнуть значок фильтра в правом верхнем углу среза, чтобы выделить сразу все элементы.

Сводные диаграммы

Сводные диаграммы в Excel очень похожи на обычные диаграммы, за исключением того, что они отображают данные сводной таблицы. Также как при работе с обычными диаграммами, Вы можете выбрать тип, макет и стиль диаграммы, которая будет представлять данные.

Создание сводной диаграммы

В данном примере сводная таблица показывает продажи каждого продавца за месяц. Мы воспользуемся сводной диаграммой, чтобы нагляднее представить информацию.

Попробуйте применить срезы и фильтры к сводной таблице, чтобы изменить количество отображаемой информации. Сводная диаграмма автоматически скорректируется, исходя из новых данных

Для обработки части большого диапазона данных можно воспользоваться фильтрацией. При фильтрации остаются видимыми только те строки, которые удовлетворяют заданным условиям, а остальные скрываются до тех пор, пока не будет отменен фильтр.


В Excel предусмотрено три типа фильтров:

    – для отбора записей по значению ячейки, по формату или в соответствии с простым критерием отбора. – интерактивные средства фильтрации данных в таблицах. – для фильтрации данных с помощью сложного критерия отбора.

Автофильтр

  1. Выделить одну ячейку из диапазона данных.
  2. На вкладке Данные [Data] найдите группу Сортировка и фильтр [Sort&Filter].
  3. Щелкнуть по кнопке Фильтр [Filter] .

Фильтр в Excel

  1. В верхней строке диапазона возле каждого столбца появились кнопки со стрелочками. В столбце, содержащем ячейку, по которой будет выполняться фильтрация, щелкнуть на кнопку со стрелкой. Раскроется список возможных вариантов фильтрации.
  1. Выбрать условие фильтрации.

Быстрый поиск при фильтрации данных

  • Фильтр по значению – отметить флажком нужные значения из столбца данных, которые высвечиваются внизу диалогового окна.
  • Фильтр по цвету – выбор по отформатированной ячейке: по цвету ячейки, по цвету шрифта или по значку ячейки (если установлено условное форматирование).
  • Можно воспользоваться строкой быстрого поиска
  • Для выбора числового фильтра, текстового фильтра или фильтра по дате (в зависимости от типа данных) выбрать соответствующую строку. Появится контекстное меню с более детальными возможностями фильтрации:
  1. При выборе опции Числовые фильтры появятся следующие варианты фильтрации: равно, больше, меньше, Первые 10… [Top 10…] и др.
  2. При выборе опции Текстовые фильтры в контекстном меню можно отметить вариант фильтрации содержит. , начинается с… и др.
  3. При выборе опции Фильтры по дате варианты фильтрации – завтра, на следующей неделе, в прошлом месяце и др.
  4. Во всех перечисленных выше случаях в контекстном меню содержится пункт Настраиваемый фильтр… [Custom…], используя который можно задать одновременно два условия отбора, связанные отношением И [And] – одновременное выполнение 2 условий, ИЛИ [Or] – выполнение хотя бы одного условия.

Если данные после фильтрации были изменены, фильтрация автоматически не срабатывает, поэтому необходимо запустить процедуру вновь, нажав на кнопку Повторить [Reapply] в группе Сортировка и фильтр на вкладке Данные.

Отмена фильтрации

Для того чтобы отменить фильтрацию диапазона данных, достаточно повторно щелкнуть по кнопке Фильтр.

Очистить фильтр со всех столбцов

Чтобы быстро снять фильтрацию со всех столбцов необходимо выполнить команду Очистить на вкладке Данные

Срезы

Срезы – это те же фильтры, но вынесенные в отдельную область и имеющие удобное графическое представление. Срезы являются не частью листа с ячейками, а отдельным объектом, набором кнопок, расположенным на листе Excel. Использование срезов не заменяет автофильтр, но, благодаря удобной визуализации, облегчает фильтрацию: все примененные критерии видны одновременно. Срезы были добавлены в Excel начиная с версии 2010.

Создание срезов

В Excel 2010 срезы можно использовать для сводных таблиц, а в версии 2013 существует возможность создать срез для любой таблицы.

Для этого нужно выполнить следующие шаги:

    Выделить в таблице одну ячейку и выбрать вкладку Конструктор [Design].

Вставка среза в Excel

Форматирование срезов

  1. Выделить срез.
  2. На ленте вкладки Параметры [Options] выбрать группу Стили срезов [Slicer Styles], содержащую 14 стандартных стилей и опцию создания собственного стиля пользователя.

Форматирование срезов

  1. Выбрать кнопку с подходящим стилем форматирования.

Чтобы удалить срез, нужно его выделить и нажать клавишу Delete.

Расширенный фильтр

Расширенный фильтр предоставляет дополнительные возможности. Он позволяет объединить несколько условий, расположить результат в другой части листа или на другом листе и др.

Задание условий фильтрации

Вначале надо скопировать шапку таблицы. Построить таблицу условий отбора данных можно либо на активном листе, либо на другом. Предпочтительнее на другом листе, иначе после фильтрации эти условия или их часть могут быть скрыты.

Фильтры являются отличным инструментом для анализа данных в Excel. Для большинства аналитиков и частых пользователей Excel фильтры являются частью нашей повседневной жизни. Мы используем раскрывающиеся меню фильтров для применения фильтров к отдельным столбцам в наборе данных. Это помогает нам связывать цифры с отчетами и проводить исследование наших данных.


Фильтрация также может быть трудоемким процессом. Особенно, когда мы применяем фильтры к нескольким столбцам на больших листах или фильтруем данные, чтобы затем копировать / вставлять их в другие листы или книги.

В этой статье объясняется, как создавать макросы для автоматизации процесса фильтрации. Это обширное руководство по методу автофильтра в VBA.

У меня также есть статьи с примерами для различных фильтров и типов данных, в том числе: пробелы, текст, числа, даты, цвета и значки, и очищающие фильтры.

Именованный диапазон для условий

Сначала надо создать именованный диапазон, куда мы будем вводить условия, и откуда макрос их будет брать. Для этого можно прямо над таблицей вставить пару-тройку пустых строк, затем выделить ячейки для будущих критериев (на рисунке это A2:F2) и дать им имя Условия, вписав его в поле имени в левом верхнем углу и нажав клавишу Enter. Для наглядности, я выделил эти ячейки желтым цветом:

Макро-рекордер — твой друг (или враг)

Мы можем легко получить код VBA для фильтров, включив макро-рекордер, а затем применив один или несколько фильтров к диапазону / таблице.

Вот шаги для создания макроса фильтра с помощью устройства записи макросов:

Если вы уже использовали макрос-рекордер для этого процесса, то вы знаете, насколько он может быть полезен. Тем более, что наши критерии фильтрации становятся более сложными.

Код будет выглядеть примерно так:

Мы видим, что каждая строка использует метод AutoFilter для применения фильтра к столбцу. Он также содержит информацию о критериях фильтра.

Мы видим, что каждая строка использует метод AutoFilter для применения фильтра к столбцу. Он также содержит информацию о критериях фильтра.

Как сделать фильтр в сводной таблице макросом

Чтобы получить данные для одного из 4-х магазинов фирмы, достаточно лишь открыть выпадающий список со всеми магазинами и выбрать один из них. Пример результата этих действий изображено на рисунке:


Изменение настроек, которые доступны в интерактивных инструментах сводной таблице доступны так же на уровне программирования макросов из редактора VBA. Выбор магазина, который является элементом поля СТРАИЦЫ реализуется с помощью свойства CurrentPage.

Sub Magazin3()
ActiveSheet.PivotTables( "ТаблицаМ" ).PivotFields( "Магазины" ).CurrentPage = "Магазин 3"
End Sub


Результат действия этого простого макроса такой же как выше рисунке, но без использования пользователем интерактивных инструментов сводной таблицы.

Решение № 1: Макрос VBA для фильтрации сводной таблицы по определенной дате или периоду

Приведенный ниже макрос может выглядеть как много кода, но на самом деле он очень прост. Чтобы его использовать, вам просто нужно будет указать все переменные для имени рабочего листа, имени сводной таблицы, имени сводного поля (Дата отчета) и критериев фильтрации (последняя дата). Эти переменные будут представлять имена объектов в вашей собственной книге.

Макрос в настоящее время настроен на использование значения из ячейки G2 в Таблице данных для критериев фильтра (самая поздняя дата). Ячейка G2 содержит формулу, которая возвращает самую последнюю дату из столбца с помощью функции MAX


Конечно, это можно изменить, чтобы вычислить самую последнюю дату в коде макроса. Хотя приятно видеть это на листе.

Как работает макрос?

Макрос сначала очищает все фильтры для поля сводки фильтра отчетов с помощью метода ClearAllFilters.

Затем он использует цикл For Next для циклического прохождения всех элементов сводки в поле сводки, чтобы применить фильтр. Каждый уникальный элемент в поле является основным элементом. Макрос проверяет, не соответствует ли имя элемента сводки (<>) критериям. Если нет, то он скрывает элемент или фильтрует его. В результате мы видим только критерии фильтра.


Как насчет фильтрации двух сводных таблиц за разные периоды времени?

Вот еще один пример с настройкой переменных в качестве параметров макроса. Это позволяет нам вызывать макрос из другого макроса.

В этом примере у нас есть лист с двумя сводными таблицами для сравнения неделя за неделей. Таким образом, нам нужно отфильтровать одну сводную таблицу для самой последней даты и одну для даты предыдущей недели.

Макрос Filter_Multiple_Pivots вызывает макрос Filter_PivotField_Args дважды. Обратите внимание, что имя сводной таблицы и значения критериев фильтрации различны для каждого вызова. Это простой способ многократно использовать макрос сводного поля фильтра без необходимости повторения большого количества кода.

Настройка: данные конвейера продаж CRM

Для обновления данных мы экспортируем конвейерный отчет каждую неделю и вставляем данные в конец существующей таблицы. Есть и другие способы автоматизации этого процесса, но мы не будем вдаваться в подробности.



Когда новые данные добавляются в таблицу данных, мы хотим автоматически фильтровать все связанные сводные таблицы, диаграммы и срезы на последнюю дату отчета.

Как установить номер поля динамически

Если мы добавим / удалим / переместим столбцы в диапазоне фильтра, то номер поля для отфильтрованного столбца может измениться. Поэтому я стараюсь по возможности избегать жесткого кодирования числа для параметра Field.

Вместо этого мы можем использовать переменную и использовать некоторый код, чтобы найти номер столбца по его имени. Вот два примера для обычных диапазонов и таблиц.


Номер столбца будет найден при каждом запуске макроса. Нам не нужно беспокоиться об изменении номера поля при перемещении столбца. Это экономит время и предотвращает ошибки (беспроигрышный вариант)!

Добавляем макрос фильтрации

Теперь надо добавить к текущему листу макрос фильтрации по критериям из созданного диапазона Условия. Для этого щелкните правой кнопкой мыши по ярлычку листа и выберите команду Исходный текст (Source text) . В открывшееся окно редактора Visual Basic надо скопировать и вставить текст вот такого макроса:

Private Sub Worksheet_Change(ByVal Target As Range) Dim FilterCol As Integer Dim FilterRange As Range Dim CondtitionString As Variant Dim Condition1 As String, Condition2 As String If Intersect(Target, Range("Условия")) Is Nothing Then Exit Sub On Error Resume Next Application.ScreenUpdating = False 'определяем диапазон данных списка Set FilterRange = Target.Parent.AutoFilter.Range 'считываем условия из всех измененных ячеек диапазона условий For Each cell In Target.Cells FilterCol = cell.Column - FilterRange.Columns(1).Column + 1 If IsEmpty(cell) Then Target.Parent.Range(FilterRange.Address).AutoFilter Field:=FilterCol Else If InStr(1, UCase(cell.Value), " ИЛИ ") > 0 Then LogicOperator = xlOr ConditionArray = Split(UCase(cell.Value), " ИЛИ ") Else If InStr(1, UCase(cell.Value), " И ") > 0 Then LogicOperator = xlAnd ConditionArray = Split(UCase(cell.Value), " И ") Else ConditionArray = Array(cell.Text) End If End If 'формируем первое условие If Left(ConditionArray(0), 1) Or Left(ConditionArray(0), 1) Then Condition1 = ConditionArray(0) Else Condition1 = "=" & ConditionArray(0) End If 'формируем второе условие - если оно есть If UBound(ConditionArray) = 1 Then If Left(ConditionArray(1), 1) Or Left(ConditionArray(1), 1) Then Condition2 = ConditionArray(1) Else Condition2 = " 0" src="/images/upload/medialibrary/d26/d26aad041f645f5989744873c68403c1.jpg" width="686" height="213">

Как и в случае с классическими Автофильтром (Filter) и Расширенным фильтром (Advanced Filter) , в нашем фильтре макросом можно смело использовать символы подстановки:

  • * (звездочка) – заменяет любое количество любых символов
  • ? (вопросительный знак) – заменяет один любой символ

и операторы логической связки:

  • И – выполнение обоих условий
  • ИЛИ – выполнение хотя бы одного из двух условий

и любые математические символы неравенства (>, =, ).

При удалении содержимого ячеек желтого диапазона Условия автоматически снимается фильтрация с соответствующих столбцов.

Метод автофильтрации

Метод AutoFilter используется для очистки и применения фильтров к одному столбцу в диапазоне или таблице в VBA. Он автоматизирует процесс применения фильтров через выпадающие меню фильтров и делает, чтобы все работало.


Его можно использовать для применения фильтров к нескольким столбцам путем написания нескольких строк кода, по одной для каждого столбца. Мы также можем использовать Автофильтр, чтобы применить несколько критериев фильтрации к одному столбцу, так же, как в выпадающем меню фильтра, установив несколько флажков или указав диапазон дат.

Рис. 4.29. Для настройки фильтра выберите или отмените выбор элементов в этой области

Рис. 4.29. Для настройки фильтра выберите или отмените выбор элементов в этой области

После выбора одного или нескольких элементов фильтра в меню Excel отображает диалоговое окно Фильтр по подписи (Label Filter). В этом окне можно вводить символы подстановки. Например, символ подстановки * применяется для поиска соответствия с последовательностью символов, а символ ? — для поиска соответствия с единственным символом.

Рис. 4.30. С помощью фильтров по подписям можно найти подписи, которые соответствуют указанному текстовому шаблону

Рис. 4.30. С помощью фильтров по подписям можно найти подписи, которые соответствуют указанному текстовому шаблону

Рис. 4.31. В меню Фильтры по значению можно выбрать регионы, основываясь на значениях в числовом поле

Рис. 4.31. В меню Фильтры по значению можно выбрать регионы, основываясь на значениях в числовом поле

Если поле подписи включает только даты, вместо раскрывающегося меню Фильтры по подписи появляется раскрывающееся меню Фильтры по дате (Date Filters). В этом меню находится большое количество виртуальных фильтров, таких как На следующей неделе (Next Week), В этом месяце (This Month), В прошлом квартале (Last Quarter) и т.д. (рис. 4.32).

Рис. 4.32. Фильтры по дате позволяют фильтровать данные, соответствующие практически любым периодам времени

Рис. 4.32. Фильтры по дате позволяют фильтровать данные, соответствующие практически любым периодам времени

В случае выбора фильтров равно (Equals), до (Before), после (After) и между (Between) можно фильтровать данные по датам либо диапазону дат. Насчитывается 15 фильтров, выполняющих фильтрацию данных по таким критериям, как прошедший/текущий/будущий день, неделя, месяц, квартал либо год. В сочетании с фильтром С начала года (Year to Day) они позволяют охватить любой промежуток времени, используемый в расчетах. Можно, например, составить сводную таблицу, в которой выводятся сведения о проектах, сгруппированных по дате завершения. В результате у вас под рукой всегда окажется список проектов, завершающихся на будущей неделе. После открытия рабочей книги, включающей фильтры по дате, вся находящаяся в ней информация будет, например, пересчитана на текущий день.

Во многих странах, в том числе в России и Украине, неделя начинается в понедельник и завершается в воскресенье. Поэтому выбор функции на следующей неделе приводит к тому, что отображается период, который начинается в ближайший понедельник и завершается в следующее воскресенье.

При выборе фильтра Все даты за период (All Dates in the Period) открывается новое меню, в котором предлагаются такие фильтры, как Месяц (Each Month) и Квартал (Each Quarter).

Если для отчета сводной таблицы, включающего несколько полей строк, выбрана сжатая форма. Excel включает все поля в первый столбец сводной таблицы. В таком случае в ячейке Названия строк (Row Labels) отображается единственный раскрывающийся список. Поэтому сначала обратитесь к раскрывающемуся списку Выберите поле (Select Field), находящемуся в верхней части раскрывающегося списка Названия строк.

Читайте также: