Перейти к содержимому

Kutools для Office — один пакет. Пять инструментов. Выполняйте больше.

Как фильтровать сводную таблицу на основе значения определенной ячейки в Excel?

Author Siluvia Last modified

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

Excel не предоставляет стандартную функцию, которая нативно связывает значение ячейки с фильтром сводной таблицы (без использования кода). Однако существует несколько практических техник для решения этой задачи, каждая из которых имеет свои преимущества и особенности. В этом руководстве сначала представлен простой метод VBA для прямого соединения ячейки с фильтром сводной таблицы, так что сводная таблица обновляется мгновенно при изменении значения ячейки. Дополнительно мы рассмотрим альтернативные методы, такие как использование формул Excel (например, GETPIVOTDATA, FILTER) для отображения отфильтрованных результатов и использование слайсеров в качестве графических элементов управления фильтрами. Понимание этих вариантов поможет вам выбрать лучший метод для вашего рабочего процесса в Excel и пользовательского опыта.

A screenshot showing a Pivot Table with a drop-down filter in Excel


Фильтрация сводной таблицы на основе значения определенной ячейки с помощью кода VBA

Если вам нужна истинная динамическая интерактивность — то есть, когда вы вводите значение в ячейку, и фильтр сводной таблицы автоматически реагирует на изменение — VBA предлагает прямое решение. Это особенно полезно в информационных панелях, шаблонах для коллег или ситуациях, где необходимы быстрые изменения фильтров через одну ячейку. Однако этот метод требует базового знакомства с редактором VBA, и, как и все макросы, ваша книга должна быть сохранена в формате с поддержкой макросов (.xlsm).

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

Шаг 1: Введите значение, по которому хотите фильтровать сводную таблицу, в ячейку рабочего листа (например, введите или выберите значение фильтрации в ячейке H6).

Шаг 2: Откройте рабочий лист, содержащий целевую сводную таблицу. Щелкните правой кнопкой мыши по ярлыку листа внизу Excel и выберите 'Просмотр кода' в контекстном меню. Это откроет окно редактора VBA для рабочего листа.

A screenshot showing the View Code option for a worksheet in Excel

Шаг 3: В открывшемся окне Microsoft Visual Basic for Applications (VBA) вставьте следующий код в модуль кода рабочего листа (не стандартный модуль):

Код VBA: Фильтрация сводной таблицы на основе значения ячейки

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xStr As String
    On Error Resume Next
    If Intersect(Target, Range("H6:H7")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
    Set xPFile = xPTable.PivotFields("Category")
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True
End Sub

📝 Примечания:

  • "Sheet1" — это рабочий лист, содержащий сводную таблицу. Измените его при необходимости.
  • "PivotTable2" — это название вашей сводной таблицы. Вы можете найти его во вкладке 'Анализ сводной таблицы'.
  • "Category" — это поле, которое вы хотите фильтровать. Оно должно точно совпадать с названием поля.
  • H6 — это ячейка фильтрации. Убедитесь, что значение соответствует элементу в списке фильтров.
  • Значения фильтров должны совпадать посимвольно. Лишние пробелы или опечатки могут вызвать ошибки или пустые результаты.

Шаг 4: Нажмите Alt + Q, чтобы закрыть редактор VBA и вернуться в Excel.

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

Pivot Table filtered based on a specific cell value

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

Result of changing the filter cell value for the Pivot Table

Устранение неполадок:

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

Формула Excel – Отображение отфильтрованных результатов сводной таблицы на основе значения ячейки

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

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

Использование GETPIVOTDATA:

Предположим, что ваша сводная таблица (называемая "PivotTable2") суммирует продажи по категориям, а значение фильтра вводится в ячейке H6. Вы можете использовать GETPIVOTDATA для отображения общих продаж для категории, указанной в H6:

1. Выберите ячейку, где вы хотите отобразить сводный результат (например, I6):

=GETPIVOTDATA("Sum of Sales", $A$4, "Category", $H$6)

2. Нажмите Enter. Когда вы измените значение в H6, результат в I6 обновится автоматически, чтобы отразить соответствующее суммирование из сводной таблицы.

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

Использование FILTER с вспомогательной таблицей:

Если вы хотите извлечь подробные записи из вашего исходного набора данных (а не только сводные итоги сводной таблицы), и вы используете Excel 365 или Excel 2019, функция FILTER позволяет динамически фильтровать данные на основе значения ячейки:

Предположим, что ваши исходные данные находятся в диапазоне A1:C100, а категория находится в столбце A.

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

=FILTER(A2:C100, A2:A100 = H6, "No data")

2. Нажмите Enter. Соответствующие строки будут появляться в соседних ячейках, перечисляя все записи, где категория соответствует значению в H6. Обновление H6 мгновенно обновит результаты.

Чтобы соответствовать группировкам сводной таблицы или фильтровать по нескольким критериям, рассмотрите комбинирование GETPIVOTDATA и FILTER или расширение формулы с дополнительными логическими условиями.

📝 Советы & Предупреждения:

  • Эти формулы не изменяют фактический фильтр сводной таблицы. Они только предоставляют отдельный динамический вид, основанный на значениях ячеек.
  • Чтобы напрямую изменить фильтры сводной таблицы, требуется VBA.
  • Убедитесь, что названия полей, используемых в GETPIVOTDATA, точно совпадают с теми, что в сводной таблице (регистр и пробелы).
  • Если вы видите ошибки #REF!, проверьте, что ваши ссылки действительны и структура сводной таблицы не изменилась.

Другие встроенные методы Excel – Использование слайсеров в качестве интерактивных фильтров сводной таблицы

Если решения на основе VBA или формул не полностью подходят для вашего рабочего процесса, слайсеры Excel предоставляют другой интерактивный метод фильтрации сводных таблиц. Слайсеры — это визуальные элементы управления фильтрами, которые позволяют пользователям фильтровать данные с помощью простого интерфейса «укажи и щелкни». Хотя их нельзя связать напрямую со значениями ячеек — то есть вы не можете изменить ячейку, чтобы контролировать слайсер — они интуитивно понятны и очень эффективны для информационных панелей и отчетов, используемых нетехническими пользователями.

Как добавить и использовать слайсер:

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

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

Ограничения: Слайсеры не поддерживают нативную связь со значениями ячеек. Если ваш рабочий процесс требует динамической фильтрации, управляемой вводом ячейки, слайсеры следует рассматривать как дополнительный инструмент, а не как замену методам VBA или формул.

Кроме того, если ваши данные хранятся в таблице Excel (не в сводной таблице), вы все равно можете использовать слайсеры, выбрав таблицу и перейдя на вкладку 'Дизайн таблицы' > 'Вставить слайсер'.

Устранение неполадок: Если слайсер, кажется, не фильтрует сводную таблицу, проверьте 'Подключения отчетов' (в разделе 'Слайсер' или 'Анализ'), чтобы убедиться, что он правильно связан с целевой(-ыми) сводной(-ыми) таблицей(-ами).

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

Связанные статьи:

Лучшие инструменты для повышения продуктивности в Office

🤖 Kutools AI Aide: Совершенно новый подход к анализу данных благодаря: Интеллектуальное выполнение |  Генерация кода  |  Создание пользовательских формул |  Анализ данных и построение диаграмм  |  Вызов Kutools Functions
Популярные функции: Поиск, выделение или отметка дубликатов | Удалить пустые строки | Объединить столбцы или адреса без потери данных | Округлить ...
Супер ПОИСК: VLOOKUP по нескольким критериям | VLOOKUP по нескольким значениям | Многолистовой поиск | Распознавание нечетких соответствий ...
Расширенный раскрывающийся список: Быстро создать раскрывающийся список | Зависимый раскрывающийся список | Множественный выбор в раскрывающемся списке ...
Менеджер столбцов: Добавить определённое количество столбцов | Переместить столбцы | Переключить видимость скрытых столбцов | Сравнить диапазоны и столбцы ...
Рекомендуемые функции: Сетка фокусировки | Дизайн листа | Улучшенная строка формулы | Управление книгой и листами | Библиотека автотекста | Выбор даты | Объединить данные | Зашифровать/расшифровать ячейки | Отправить письмо по списку | Супер фильтр | Специальный фильтр (фильтр жирный/курсив/зачеркнутый...) ...
Топ15 наборов инструментов:12 текстовых инструментов (Добавить текст, Удалить определенные символы, ...) |50+ типов диаграмм (Диаграмма Ганта, ...) |40+ полезных формул (Расчет возраста на основе даты рождения, ...) |19 инструментов для вставки (Вставить QR-код, Вставить изображение по пути, ...) |12 инструментов преобразования (Преобразовать в слова, Конвертация валюты, ...) |7 инструментов объединения и разделения (Расширенное объединение строк, Разделить ячейки, ...) | ... и многое другое
Используйте Kutools на предпочитаемом вами языке — поддерживает Английский, Испанский, Немецкий, Французский, Китайский и более40 других языков!

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


Office Tab добавляет вкладки в Office и делает вашу работу намного проще

  • Включите режим вкладок для редактирования и чтения в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов во вкладках одного окна вместо новых отдельных окон.
  • Увеличьте свою продуктивность на50% и уменьшите количество щелчков мышью на сотни ежедневно!

Все надстройки Kutools. Один установщик

Пакет Kutools for Office включает надстройки для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro — идеально для команд, работающих в разных приложениях Office.

Excel Word Outlook Tabs PowerPoint
  • Комплексный набор — надстройки для Excel, Word, Outlook и PowerPoint плюс Office Tab Pro
  • Один установщик, одна лицензия — настройка занимает считанные минуты (MSI-совместимо)
  • Совместная работа — максимальная эффективность между приложениями Office
  • 30-дневная полнофункциональная пробная версия — без регистрации и кредитной карты
  • Лучшее соотношение цены и качества — экономия по сравнению с покупкой отдельных надстроек