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

Знаете ли вы, что можете автоматизировать свои сводные таблицы в Excel и создавать их одним щелчком мыши? MS Excel хорошо интегрируется с VBA и стал отличным инструментом для автоматизации повторяющихся задач.

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

Используйте практический набор данных

Вы можете скачать и использовать макет набор данных из Tableau чтобы следовать сценарию VBA в этом руководстве. Код VBA будет работать с любым другим набором данных с несколькими основными настройками. Прежде чем начать, убедитесь, что у вас есть включенные макросы в вашей книге Excel.

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

instagram viewer
  • Фильтр: Область
  • Ряды: Подкатегория
  • Столбцы: Состояние
  • Ценности: Продажи

Конечный стержень должен выглядеть следующим образом:

Однако вы можете позволить VBA сделать это автоматически, а не готовить его вручную.

Как автоматически создавать сводные таблицы в Excel

Чтобы автоматизировать сводные таблицы с помощью VBA, откройте новый файл Excel и переименуйте листы следующим образом:

  • Первый лист: макрос
  • Второй лист: Данные

макрос лист содержит сценарий макроса, а Данные лист содержит ваши данные. На листе макроса вы можете вставить любую фигуру по вашему выбору и назначить ей макрос. Щелкните правой кнопкой мыши фигуру и выберите «Назначить макрос».

В следующем диалоговом окне щелкните имя вашего макроса и нажмите «ОК». На этом шаге макрос назначается фигуре.

1. Откройте редактор кодирования Excel VBA.

Нажимать Альт + F11 чтобы открыть редактор кода. Как только вы окажетесь в редакторе кода, щелкните правой кнопкой мыши имя файла, а затем Вставлять и Модуль. Важно помнить, что вы будете писать весь код VBA внутри модуля перед его выполнением.

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

подсистема pivot_demo()

Имя модуля заканчивается на Конец сабвуфера, которая является завершающей командой модуля:

Конец Саб

2. Объявить переменные

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

Тусклый PSheet Как Рабочий лист, D-лист Как Рабочий лист
Дим PvtCache Как сводной кэш
Dim PvtTable Как сводная таблица
Dim PvtRange Как Диапазон
Затемнить последнюю_строку Как Длинный, Last_Col Как Длинный
Дим шт1 как Вариант

Вы будете использовать эти переменные для следующего:

  • Лист: Целевой лист, где VBA создаст сводку.
  • Длист: Лист данных.
  • Пвткеш: Кэш сводки содержит сводку.
  • PvtТаблица: Объект сводной таблицы.
  • PvtRange: Диапазон данных для сводки.
  • Last_Row и Last_Col: Последняя заполненная строка и столбец в листе данных (DSheet).
  • Шт1: Эта переменная является вариантом.

3. Подавить предупреждения и сообщения

Ненужные ошибки, предупреждения и сообщения замедляют работу кодов VBA. Подавив такие сообщения, вы можете значительно ускорить процесс.

Используйте следующий код:

На Ошибка Возобновить Далее

С Приложение
.DisplayAlerts = ЛОЖЬ
.Обновление экрана = ЛОЖЬ
КонецС

Где:

  • При ошибке Возобновить дальше: Этот пункт подавляет любые ошибки во время выполнения.
  • Приложение: Приложение относится к MS Excel.
  • DisplayAlerts: Свойство DisplayAlerts определяет, показывать ли оповещения.
  • Обновление экрана: Это свойство определяет, следует ли обновлять изменения в режиме реального времени или только после завершения выполнения кода.

Когда этот код запускается, он подавляет любые оповещения, предупреждения и сообщения, которые Excel показывал бы в противном случае. Вы можете отключить параметры DisplayAlerts и ScreenUpdating, установив для них значения ЛОЖЬ.

Ближе к концу кода вы можете снова включить их, установив значение как Истинный.

4. Удалить все существующие сводные листы

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

В этом руководстве давайте создадим новый сводной лист для хранения сводной таблицы.

для каждого Цикл циклически перебирает каждый лист в рабочей книге и сохраняет имя листа в шт1 переменная. Вы можете использовать любое имя переменной (sht1) для хранения имени листа. Цикл перебирает каждый лист в текущей книге в поисках листа с определенным именем (Вращаться).

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

Вот как это сделать:

ДляКаждыйшт1ВАктивворкбук.Рабочие листы
Если sht1.Name = "Вращаться" Затем
шт1.Удалить
КонецЕсли
Следующий шт1

Рабочие листы. Добавлять. Имя = "Вращаться"

5. Определение источника данных и сводных таблиц

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

Установите PSheet = Рабочие листы ("Вращаться")
Установите DSheet = Рабочие листы ("Данные")

6. Определите последнюю использованную строку и столбец

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

Последняя_строка = DSheet. Ячейки (строки. Счетчик, 1).Конец (xlUp).Строка
Last_Col = DSheet. Ячейки (1, Столбцы. Количество).Конец (xlToLeft).Колонка
Набор PvtRange = DSheet. Ячейки(1, 1).Изменить размер (Last_Row, Last_Col)

Где:

  • Последняя_строка: Переменная для хранения номера последней заполненной строки, т. е. 9995.
  • Последний_столбец: Переменная для хранения номера последнего заполненного столбца, т.е. 21
  • PvtRange: PvtRange ссылается на весь диапазон данных для разворота.

7. Создание сводного кэша и сводной таблицы

Сводной кеш содержит сводную таблицу; поэтому вам необходимо создать кеш перед созданием сводной таблицы. Вы должны использовать ссылки на синтаксис VBA для создания сводного кэша в сводном листе.

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

Установите PvtCache = ActiveWorkbook. Сводные кеши. Создать (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Ячейки (2, 2), имя_таблицы:="MUODemoTable")
Установите PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Ячейки (1, 1), имя_таблицы:="MUODemoTable")

Где:

  • АктивВоркбук: Текущая рабочая книга, в которой у вас есть данные и сводная таблица.
  • Сводные кеши. Создавать: Синтаксис по умолчанию для создания сводного кеша.
  • Тип источника: Поскольку у вас есть данные в рабочей книге, вы можете определить их как кслбаза данных. Некоторые другие варианты включают xlКонсолидация, xlExternal, или кслпивоттабле.
  • Источник данных: Вы можете ссылаться на предыдущий диапазон разворота в качестве исходных данных.
  • Создать сводную таблицу: Команда по умолчанию для создания сводной таблицы.
  • Назначение таблицы: Вам нужно указать ссылки на листы и ячейки, где вы хотите создать сводку.
  • ИмяТаблицы: Укажите имя сводной таблицы.
  • Создать сводную таблицу: Команда по умолчанию для создания сводной таблицы в сводном кеше.

8. Вставка строк, столбцов, фильтров и значений

Поскольку сводная таблица готова, вам нужно начать добавлять параметры в фильтры, строки, столбцы и значения агрегирования. Вы можете использовать VBA сводные поля команда, чтобы начать объявлять подробности.

Чтобы добавить значения фильтра:

С ActiveSheet. сводные таблицы("MUODemoTable").Сводные поля("Область")
.Ориентация = кслпажефиелд
КонецС

Чтобы добавить значения строки:

С ActiveSheet. сводные таблицы("MUODemoTable").Сводные поля("Подкатегория")
.Ориентация = кслровфиелд
КонецС

Чтобы добавить значения столбца:

С ActiveSheet. сводные таблицы("MUODemoTable").Сводные поля("Состояние")
.Ориентация = кслколумнфиелд
КонецС

Чтобы добавить значения агрегации:

С ActiveSheet. сводные таблицы("MUODemoTable").Сводные поля("Продажи")
.Ориентация = кслдатафиелд
.Функция = кслсум
КонецС

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

  • кслпажефиелд: Чтобы добавить фильтры.
  • кслровфиелд: Чтобы добавить строки.
  • кслровфиелд: Чтобы добавить столбцы.

Наконец, вы можете использовать кслдатафиелд команда для расчета агрегации значений. Вы можете использовать другие агрегатные функции, такие как xlSum, xlAverage, xlCount, xlMax, xlMin и xlProduct.

9. Запуск кода Excel VBA для создания автоматических сводок

Наконец, когда вся программа будет готова, вы можете запустить ее, нажав F5 или нажав на играть кнопка. Когда вы вернетесь к сводному листу в своей книге, вы увидите, что новая сводная таблица готова для просмотра.

Если вы хотите увидеть пошаговое выполнение команды кода, строка за строкой, вы можете перейти в редактор кода и нажать F8 несколько раз. Таким образом, вы можете увидеть, как работает каждая строка кода и как VBA автоматически создает сводные данные.

Обучение кодированию сводных таблиц автоматически

Сводки не ограничиваются только MS Excel. Языки программирования, такие как Python, позволяют создавать оптимизированные сводные данные всего несколькими строками кода.

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