Используйте VBA в Excel для создания и восстановления сводной таблицы

Функция сводной таблицы – это мощная функция Excel, которая помогает быстро суммировать данные. Эта функция впервые появляется в Excel 5.

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

Предположим, что на листе 1 у меня есть блок данных для анализа, как показано на фигура 1 . Этот блок данных включает поля: SalesRep (торговый представитель), Region (регион), Month (месяц), Sales (продажи).

Изображение 1: Использование VBA в Excel для создания и восстановления сводной таблицы

Перед созданием сводной таблицы, например фигура 2 , Я выбрал «Записать новый макрос». как показано в Рисунок 3 , чтобы увидеть, как записывается код.

Изображение 2: Использование VBA в Excel для создания и восстановления сводной таблицы

Изображение 3: Использование VBA в Excel для создания и восстановления сводной таблицы

Рисунок 3

Затем я перехожу на экран VBE, нажимая Alt + F11 . Я вошел Модуль1 , увидев следующий код:

Дополнительный макрос1 ()

Макрос1 Макрос1

Макро записано 17.03.2003 Дуйе

Диапазон (“A1: D13”). Выбирать

ActiveWorkbook.PivotCaches.Add (SourceType: = xlDatabase, SourceData: = _

«Лист1! R1C1: R13C4»). CreatePivotTable TableDestination: = Range (“A1”), _

TableName: = “PivotTable1”

ActiveSheet.PivotTables («Сводная таблица1»). SmallGrid = False

Примечание:

Область, край

Поле страницы в сводной таблице.

Торговый представитель

Поле строки в сводной таблице.

Месяц

Поле столбца в сводной таблице.

Продажи

Поле данных в сводной таблице с использованием функции Sum

ActiveSheet.PivotTables («Сводная таблица1»). AddFields RowFields: = “SalesRep”, _

ColumnFields: = “Месяц”, PageFields: = “Регион”

ActiveSheet.PivotTables («Сводная таблица1»). Сводные поля («Продажи»). Ориентация = _

xlDataField

Конец подписки

Изучите написанный код:

Чтобы исследовать приведенный выше код, вам необходимо знать некоторые связанные объекты. Все эти объекты описаны в интерактивной справке.

Сводные кеши

представляет собой набор объектов PivotCache в объекте Workbook

Сводные таблицы

представляет собой набор объектов сводной таблицы в объекте Workbook

Поля сводной таблицы

представляет собой набор полей в объекте сводной таблицы

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

метод объекта PivotCache для создания сводной таблицы с использованием данных в PivotCache

Мы можем переписать описанную выше процедуру, используя CreatePivotTable процедура (обратите внимание, что вы вводите эту процедуру в module1), она может быть немного длинной, но ее будет легче понять, и вы можете запустить программу где угодно, нажав Alt + F8 комбинацию клавиш, затем выберите CreatePivotTable процедуру и выберите Запустить как показано в Рисунок 4 .

Изображение 4: Использование VBA в Excel для создания и восстановления сводной таблицы

Подложка CreatePivotTable ()

Dim PTCache как PivotCache

Dim PT As PivotTable

Application.ScreenUpdating = False

Потрите сводную таблицу около уха

Изображение 5: Использование VBA в Excel для создания и восстановления сводной таблицы

При ошибке Возобновить Далее

Application.DisplayAlerts = False

Таблицы (“Сводная таблица”) Удалить

При ошибке GoTo 0

Tao Pivot Cache

Установите PTCache = ActiveWorkbook.PivotCaches.Add _

(SourceType: = xlDatabase, _

SourceData: = Sheets (“Sheet1”). Диапазон («А1»). CurrentRegion.Address)

Создать новый рабочий лист и каталог

Рабочие листы.Добавить

ActiveSheet.Name = “PivotSheet”

Tao Pivot Table tu Cache

Установите PT = PTCache.CreatePivotTable _

(TableDestination: = Sheets (“PivotSheet”). Диапазон (“A1”), _

TableName: = “PivotTable1”)

С ПТ

Их школы

.PivotFields (“Регион”) Orientation = xlPageField

.PivotFields («Месяц»). Ориентация = xlColumnField

.PivotFields (“SalesRep”) Ориентация = xlRowField

.PivotFields (“Продажи”) Orientation = xlRowField

Application.ScreenUpdating = True

Конец с

Конец подписки

Когда вы закончите описанную выше процедуру, вы получите сводную таблицу на листе 2, в этом случае лист называется сводной таблицей. ( Рисунок 5. )

Если вы обратите внимание, вы увидите разницу между двумя приведенными выше кодами. В Макрос1 при использовании Добавлять метод создания PivotCache , Источник данных является ” Sheet1! R1C1: R13C4 “и в коде я пишу Листы («Лист1»). Диапазон («А1»). CurrentRegion.Address . Здесь я использую Свойство Current Region , что означает, что данные, которые мы используем, основаны на текущей области вокруг ячейки A1. Это необходимо для того, чтобы CreatePivotTable процедура продолжает хорошо работать, когда мы добавляем данные.

Теперь предположим, что я добавил Цель поле в блоке данных, а в Сводная таблица Я добавлю целевое поле, а также добавлю Дисперсия поле расчета. Это поле (Дисперсия) будет равно Объект скидок . Мой новый блок данных показан в Рисунок 6 .

Код в CreatePivotTable Приведенная выше процедура будет добавлена ​​следующим образом (я только что добавил в абзаце With PT. End With):

С ПТ

Их школы

Изображение 6: Использование VBA в Excel для создания и восстановления сводной таблицы

.PivotFields (“Регион”) Orientation = xlPageField

.PivotFields («Месяц»). Ориентация = xlColumnField

.PivotFields (“SalesRep”) Ориентация = xlRowField

.PivotFields (“Продажи”) Orientation = xlDataField

.PivotFields (“Target”) Orientation = xlDataField

Отличные новости

.CalculatedFields.Add “Разница”, “= Продажи – Цель”

.PivotFields (“Разница”). Ориентация = xlDataField

Заменить заголовок doi

.PivotFields («Сумма продаж»). Заголовок = “Продажи ($)”

.PivotFields («Сумма цели»). Caption = “Цель ($)”

.PivotFields («Сумма дисперсии»). Заголовок = “Разница ($)”

Конец с

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

Предположим, мои данные теперь составляют 6 месяцев ( Рисунок 8 ), Я хочу добавить итоговый столбец на 3 месяца. Мне нужно исправить свой код следующим образом:

С ПТ

Их школы

.PivotFields (“Регион”) Orientation = xlPageField

.PivotFields («Месяц»). Ориентация = xlColumnField

Изображение 7: Использование VBA в Excel для создания и восстановления сводной таблицы

.PivotFields (“SalesRep”) Ориентация = xlRowField

.PivotFields (“Продажи”) Orientation = xlDataField

.PivotFields (“Target”) Orientation = xlDataField

Отличные новости

.CalculatedFields.Add “Разница”, “= Продажи – Цель”

.PivotFields (“Разница”). Ориентация = xlDataField

Полная учетная запись

.PivotFields («Месяц»). CalculatedItems.Add “Q1”, _

“= лестница 1 + лестница 2 + лестница 3”

.PivotFields («Месяц»). CalculatedItems.Add “Q2”, _

“= лестница 4 + лестница 5 + лестница 6”

Переместите файлы

.PivotFields («Месяц»). PivotItems («Q1»). Позиция = 4

.PivotFields («Месяц»). PivotItems («Q2»). Позиция = 8

Заменить заголовок doi

.PivotFields («Сумма продаж»). Заголовок = “Продажи ($)”

.PivotFields («Сумма цели»). Caption = “Цель ($)”

.PivotFields («Сумма дисперсии»). Заголовок = “Разница ($)”

Конец с

После повторного запуска процедуры CreatePivotTable я получу результат, как показано на Рисунок 9 .

Изображение 8: Использование VBA в Excel для создания и восстановления сводной таблицы

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

Надеюсь, эта статья частично вам поможет.

Любые предложения присылайте по адресу levanduyet@pmail.vnn.vn.

Le Van Duyet

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *