Шаг 49.
VBA в MSExcel.
Сводные таблицы. Пример использования метода PivotTableWizard
На этом шаге мы рассмотрим пример использования указанного метода.
Рассмотрим соответствие между аргументами метода PivotTabieWizard и созданием сводной таблицы вручную на рабочем
листе с помощью команды Данные | Сводная таблица (Data | Pivot Table). Сводную таблицу будем создавать
для отчета по продажам компьютеров сети из трех магазинов (рисунок 1).

Рис.1. Отчет о продаже компьютеров сети из трех магазинов
- Выберите команду Данные | Сводная таблица (Data | Pivot Table and Pivot Chart Report). Появится первое
диалоговое окно Мастера сводных таблиц (рисунок 2).

Рис.2. Первое диалоговое окно Мастера сводных таблиц
Выбор переключателей, расположенных под заголовком Создать таблицу на основе данных, находящихся:
(Where is the data that you want to analyze?) позволяет установить источник данных для сводной таблицы.
- Переключатель в списке или базе данных Microsoft Excel (Microsoft Excel List or Database) устанавливает
создание сводной таблицы на основе списка данных, расположенных на рабочем листе.
- Переключатель во внешнем источнике данных (External Data Source) устанавливает создание сводной
таблицы на основе файлов или таблиц, созданных другими программами.
- Переключатель в нескольких диапазонах консолидации (Multiple Consolidation Ranges) устанавливает
создание сводной таблицы на основе нескольких списков.
- Переключатель в другой сводной таблице (Another Pivot Table) устанавливает создание сводной таблицы
на основе другой существующей сводной таблицы.
Установите переключатель в списке или базе данных Microsof Excel (Microsoft Excel List or Database), т.к.
сводная таблица будет создаваться на основе одного списка активного рабочего листа. Нажмите кнопку Далее (Next).
- На экране появится второе диалоговое окно Мастера сводных таблиц (рисунок 3).

Рис.3. Второе диалоговое окно Мастера сводных таблиц
В поле Диапазон (Range) введите ссылку, например A1:Е16, на диапазон, по которому будет строиться сводная
таблица. Нажмите кнопку Далее (Next).
- На экране появится следующее диалоговое окно Мастера сводных таблиц (рисунок 4), в котором, воспользовавшись
кнопкой Макет, можно создать структуру сводной таблицы.

Рис.4. Третье диалоговое окно Мастера сводных таблиц
- Выберите поле, по которому будут подводиться итоги сводных таблиц, и перетащите кнопку, соответствующую этому полю в область
Данные (Data). В данном случае перетащим кнопку Стоимость в область Данные (Data)
(рисунок 5).

Рис.5. Третье диалоговое окно Мастера сводных таблиц после создания структуры сводной таблицы
Двойной щелчок на кнопке Стоимость в области Данные (Data) приводит к отображению
диалогового окна Вычисления поля сводной таблицы (PivotTable Field), позволяющее установить операцию,
на основе которой будут подводиться итоги. Выберите операцию Сумма (Sum).
- Выберите поля, которые будут образовывать строки сводной таблицы и перетащите кнопки, соответствующие этим полям в область
Строка (Row). В данном случае строки сводной таблицы будут соответствовать магазинам. Поэтому перетащим
кнопку Магазин в область Строка (Row).
- Выберите поля, которые будут образовывать столбцы сводной таблицы и перетащите кнопки, соответствующие этим полям в область
Столбец (Column). В данном случае строки сводной таблицы будут соответствовать месяцам. Поэтому перетащим кнопку
Месяц в область Столбец (Column).
- Если вы хотите создать сводную таблицу в виде подшивки страниц, то перетащите кнопку, соответствующую полю, по которому будут строиться
страницы в область Страница (Page). В данном случае сводная таблица, состоящая из страниц, не строится и
поэтому не будем перетаскивать никакую кнопку в область Страница (Page).
Нажмите кнопку ОК.
- Вернемся к предыдущему окну Мастера сводных таблиц (рисунок 6).

Рис.6. Третье диалоговое окно Мастера сводных таблиц
В этом окне устанавливается местоположение сводной таблицы.
- Выбор переключателя новый лист (New worksheets) приводит к созданию нового рабочего листа и размещения
на нем сводной таблицы. Выберите переключатель новый лист.
- Выбор переключателя существующий лист (Existing worksheets) позволяет разместить сводную таблицу в
любом месте уже существующего листа. Для этого в поле Поместить таблицу в (Pivot Table Starting Cell) надо
указать ссылку на ячейку, в которой будет располагаться левый верхний угол сводной таблицы.
- Нажав кнопку Параметры (Options), можно вызвать диалоговое окно Параметры сводной таблицы
(Pivot Table Options), где задаются имя сводной таблицы и ее формат.
Нажмите кнопку Готово (Finish).
- Сводная таблица построена (рисунок 7).

Рис.7. Сводная таблица
Такую же сводную таблицу можно построить при помощи следующей последовательности инструкций VBA:
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, _
SourceData:= "Лист1!R1C1:R16C5", TableDestination:="", _
TableName:="СводнаяТаблица1"
ActiveSheet.PivotTables ("СводнаяТаблица1").AddFields _
RowFields:="Магазин", ColumnFields:="Месяц"
ActiveSheet.PivotTables ("СводнаяТаблица1"). _
PivotFields("Стоимость").Orientation = xlDataField
Если в данных, по которым строилась сводная таблица, произошли изменения, для перерасчета сводной таблицы надо ее выделить и
выбрать команду Данные | Обновить данные (Data | Refresh Data). Программно перерасчет сводной таблицы
осуществляется следующими инструкциями:
ActiveSheet.PivotTables("СводнаяТаблица1"). _
PivotSelect "", xlDataAndLabel
ActiveSheet.PivotTables("СводнаяТаблица1").RefreshTable
На следующем шаге мы рассмотрим преобразования сводной таблицы.
Предыдущий шаг
Содержание
Следующий шаг