Посібник VBA до зведених таблиць

Цей підручник покаже, як працювати з зведеними таблицями за допомогою VBA.

Зведені таблиці - це інструменти узагальнення даних, які можна використовувати для отримання ключових уявлень та резюме з ваших даних. Давайте розглянемо приклад: у комірках A1: D21 є набір вихідних даних, що містить деталі проданих продуктів, показані нижче:

Використання GetPivotData для отримання значення

Припустимо, у вас є зведена таблиця під назвою Зведена таблиця1 із продажами у полі «Значення/дані», «Продукт» у полі «Рядки» та «Регіон» у полі «Стовпці». Щоб повернути значення зі зведених таблиць, можна використовувати метод PivotTable.GetPivotData.

Наведений нижче код поверне 1130,00 доларів США (загальний обсяг продажів для Східного регіону) зі зведеної таблиці:

1 MsgBox ActiveCell.PivotTable.GetPivotData ("Продажі", "Регіон", "Схід")

У цьому випадку Продаж - це «Поле даних», «Поле1» - це Регіон, а «Елемент1» - Схід.

Наступний код поверне $ 980 (загальний обсяг продажів продукту ABC у Північному регіоні) зі зведеної таблиці:

1 MsgBox ActiveCell.PivotTable.GetPivotData ("Продажі", "Продукт", "ABC", "Регіон", "Північ")

У цьому випадку Продаж - це «Поле даних», «Поле1» - це продукт, «Елемент1» - ABC, «Поле2» - Регіон, а «Елемент2» - північ.

Ви також можете включити більше 2 полів.

Синтаксис GetPivotData такий:

GetPivotData (DataField, Поле1, Пункт 1, Поле 2, Пункт 2… ) де:

Параметр Опис
Поле даних Поле даних, таке як продажі, кількість тощо, яке містить цифри.
Поле 1 Назва стовпця або поля рядка в таблиці.
Пункт 1 Назва елемента в полі 1 (необов’язково).
Поле 2 Назва стовпця або поля рядка в таблиці (необов’язково).
Пункт 2 Назва елемента у полі 2 (необов’язково).

Створення зведеної таблиці на аркуші

Для того, щоб створити зведену таблицю на основі діапазону даних вище, у клітинці J2 на аркуші 1 активної книги, ми б використали такий код:

1234567891011 Робочі аркуші ("Аркуш1"). Клітинки (1, 1) .ВиберітьActiveWorkbook.PivotCaches.Create (Тип джерела: = xlDatabase, SourceData: = _"Sheet1! R1C1: R21C4", Version: = xlPivotTableVersion15) .CreatePivotTable _TableDestination: = "Sheet1! R2C10", TableName: = "Зведена таблиця1", DefaultVersion _: = xlPivotTableVersion15Аркуші ("Аркуш1"). Виберіть

Результат такий:

Створення зведеної таблиці на новому аркуші

Щоб створити зведену таблицю на основі діапазону даних вище, на новому аркуші активної книги, ми б використали такий код:

12345678910111213 Робочі аркуші ("Аркуш1"). Клітинки (1, 1) .ВиберітьАркуші. ДодActiveWorkbook.PivotCaches.Create (Тип джерела: = xlDatabase, SourceData: = _"Sheet1! R1C1: R21C4", Version: = xlPivotTableVersion15) .CreatePivotTable _TableDestination: = "Sheet2! R3C1", TableName: = "Зведена таблиця1", DefaultVersion _: = xlPivotTableVersion15Аркуші ("Аркуш2"). Виберіть

Додавання полів до зведеної таблиці

Ви можете додавати поля до щойно створеної зведеної таблиці під назвою Зведена таблиця1, виходячи з наведеного вище діапазону даних. Примітка. Аркуш, що містить зведену таблицю, має бути активним аркушем.

Щоб додати продукт до поля рядків, потрібно використати такий код:

123 ActiveSheet.PivotTables ("Зведена таблиця1"). Зворотні поля ("Продукт"). Орієнтація = xlRowFieldActiveSheet.PivotTables ("Зведена таблиця1"). Зведені поля ("Продукт"). Положення = 1

Щоб додати регіон до поля стовпців, потрібно використати такий код:

123 ActiveSheet.PivotTables ("Зведена таблиця1"). Зворотні поля ("Регіон"). Орієнтація = xlColumnFieldActiveSheet.PivotTables ("Зведена таблиця1"). Зведені поля ("Регіон"). Положення = 1

Щоб додати Продажі до Розділу цінностей у форматі номера валюти, слід використати такий код:

123456789 ActiveSheet.PivotTables ("Зведена таблиця1"). AddDataField ActiveSheet.PivotTables (_"Зведена таблиця1"). Зведені поля ("Продажі"), "Сума продажів", xlSumЗ ActiveSheet.PivotTables ("Зведена таблиця1"). Зведені поля ("Сума продажів").NumberFormat = "$#, ## 0.00"Закінчити з

Результат такий:

Зміна макета звіту зведеної таблиці

Ви можете змінити макет звіту зведеної таблиці. Наступний код змінить макет звіту зведеної таблиці на табличну форму:

1 ActiveSheet.PivotTables ("Зведена таблиця1"). TableStyle2 = "Зведений стильLight18"

Видалення зведеної таблиці

Ви можете видалити зведену таблицю за допомогою VBA. Наступний код видалить зведену таблицю під назвою Зведена таблиця1 в активному аркуші:

12 ActiveSheet.PivotTables ("Зведена таблиця1"). PivotSelect "", xlDataAndLabel, TrueSelection.ClearContents

Відформатуйте всі зведені таблиці у книзі

Ви можете відформатувати всі зведені таблиці у книзі за допомогою VBA. У наведеному нижче коді використовується структура циклу для перегляду всіх аркушів книги та видалення всіх зведених таблиць у книзі:

12345678910111213 ПідформатуванняAllThePivotTablesInAWorkbook ()Затемнити робочі дні як робочий аркушDim wb Як робочий зошитВстановити wb = ActiveWorkbookDim pt як зведена таблицяДля кожного тижня в таблицях веб -сторінокДля кожного пункту В тижpt.TableStyle2 = "PivotStyleLight15"Наступний пунктНаступні тижніEnd Sub

Щоб дізнатися більше про те, як використовувати цикли у VBA, натисніть тут.

Видалення полів зведеної таблиці

Ви можете видалити поля зведеної таблиці за допомогою VBA. Наступний код видалить поле Product у розділі Rows зі зведеної таблиці з назвою PivotTable1 в активному аркуші:

12 ActiveSheet.PivotTables ("Зведена таблиця1"). Зворотні поля ("Продукт"). Орієнтація = _xlHidden

Створення фільтра

Зведена таблиця під назвою Зведена таблиця1 була створена з розділом «Продукт» у розділі «Рядки» та «Продажі» у розділі «Значення». Ви також можете створити фільтр для зведеної таблиці за допомогою VBA. Наступний код створить фільтр на основі регіону в розділі Фільтри:

123 ActiveSheet.PivotTables ("Зведена таблиця1"). Зворотні поля ("Регіон"). Орієнтація = xlPageFieldActiveSheet.PivotTables ("Зведена таблиця1"). Зведені поля ("Регіон"). Положення = 1

Щоб відфільтрувати зведену таблицю на основі єдиного елемента звіту, в даному випадку в східному регіоні, слід використати такий код:

12345 ActiveSheet.PivotTables ("Зведена таблиця1"). Зворотні поля ("Регіон"). ClearAllFiltersActiveSheet.PivotTables ("зведена таблиця1"). Зведені поля ("регіон"). CurrentPage = _"Схід"

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

1234567891011121314 ActiveSheet.PivotTables ("Зведена таблиця1"). Зворотні поля ("Регіон"). Орієнтація = xlPageFieldActiveSheet.PivotTables ("Зведена таблиця1"). Зведені поля ("Регіон"). Положення = 1ActiveSheet.PivotTables ("зведена таблиця1"). Зведені поля ("регіон"). _EnableMultiplePageItems = ІстинаЗ ActiveSheet.PivotTables ("зведена таблиця1"). Зведені поля ("регіон").PivotItems ("Південь"). Visible = False.PivotItems ("Захід"). Видимий = НеправдивийЗакінчити з

Оновлення зведеної таблиці

Ви можете оновити зведену таблицю у VBA. Щоб оновити певну таблицю під назвою Зведена таблиця1 у VBA, ви б використали такий код:

1 ActiveSheet.PivotTables ("Зведена таблиця1"). PivotCache.Refresh
wave wave wave wave wave