VBA - Обновить сводную таблицу / Все сводные таблицы

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

Сводные таблицы - это исключительно мощный инструмент для работы с данными в Excel. Сводные таблицы позволяют нам анализировать и интерпретировать большие объемы данных путем группировки и суммирования полей и строк.

Когда мы создаем сводную таблицу, данные хранятся в так называемом кэше сводной таблицы. Таким образом, данные хранятся в кэш-памяти ПК, что ускоряет работу сводной таблицы.

Если источник данных сводной таблицы обновлен, сама сводная таблица не обновляется. Пользователю в Excel необходимо щелкнуть Обновить все на вкладке «Данные» на ленте, чтобы обновить исходные данные сводной таблицы.

В качестве альтернативы мы можем написать макросы на VBA, которые обновят данные за нас!

Обновить все подключения к данным

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

123 Sub RefreshConnections ()ActiveWorkbook.RefreshAllКонец подписки

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

Обновить все сводные таблицы

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

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

123456 Sub RefreshPivotsOnly ()Dim tblPivot As PivotTableДля каждого tblPivot в ActiveWorkbook.PivotTablestblPivot.RefreshTableСледующий tblPivotКонец подписки

Мы можем использовать аналогичный макрос для обновления сводных таблиц в нашем Активный лист а не всю книгу. Затем мы перебрали сводные таблицы в ActiveSheet а не ActiveWorkbook.

123456 Sub RefreshActiveSheetPivotsOnly ()Dim tblPivot As PivotTableДля каждого tblPivot в ActiveSheet.PivotTablestblPivot.RefreshTableСледующий tblPivotКонец подписки

Этот макрос был бы наиболее полезен, если бы у нас был легкий доступ к нему на нашем ActiveSheet. Для этого мы можем создать кнопку на листе для запуска макроса.

Обновить одну сводную таблицу

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

123 Sub RefreshOneTableActiveSheet.PivotTables ("PivotTable1"). RefreshTableКонец подписки

Обновление кеша сводной таблицы

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

123456 Sub RefreshCache ()Dim chPivot As PivotCacheДля каждого chPivot в ActiveWorkbook.PivotCacheschPivot.RefreshСледующий chPivotКонец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave