Обобщените таблици в Excel са основни за улесняване на разбирането и разбирането на данните. Една обобщена таблица може да кондензира и смачка данните в смислени структури. Потребителите на MS Excel са ги възприели широко в индустрията за данни.
Знаете ли, че можете да автоматизирате осевите си таблици в Excel и да ги създавате с едно кликване? MS Excel се интегрира добре с VBA и се превърна в отличен инструмент за автоматизиране на повтарящи се задачи.
Ето как можете да автоматизирате обобщена таблица с макрос в MS Excel VBA.
Използвайте набор от данни за практика
Можете да изтеглите и използвате манекен набор от данни от Tableau за да следвате VBA скрипта в това ръководство. Кодът на VBA ще работи с всеки друг набор от данни, с няколко основни настройки. Преди да започнете, уверете се, че имате активирани макроси във вашата работна книга на Excel.
Има няколко основни колони, които можете да използвате в обобщената таблица. За да разберете нюансите и окончателната структура на таблицата, можете създайте ръчно основна обобщена таблица със следните елементи:
- филтър: Регион
- Редове: Подкатегория
- Колони: състояние
- Стойности: Продажби
Крайният шарнир трябва да изглежда по следния начин:
Можете обаче да оставите VBA да го направи автоматично, вместо да го подготвяте ръчно.
Как автоматично да създавате обобщени таблици в Excel
За да автоматизирате осевите си таблици с VBA, отворете нов Excel файл и преименувайте листовете, както следва:
- Първи лист: Макро
- Втори лист: Данни
The Макро лист съдържа макро скрипта, докато Данни лист съдържа вашите данни. В листа с макроси можете да вмъкнете произволна форма по ваш избор и да присвоите макроса към нея. Щракнете с десния бутон върху формата и щракнете върху Присвояване на макрос.
В следващия диалогов прозорец щракнете върху името на вашия макрос и щракнете върху Ok. Тази стъпка присвоява макроса на формата.
1. Отворете Excel VBA редактора за кодиране
Натиснете Alt + F11 за да отворите редактора на кодове. След като сте в редактора на код, щракнете с десния бутон върху името на файла, последвано от Поставете и Модул. Важно е да запомните, че ще напишете целия VBA код в модула, преди да го изпълните.
Добра практика е да използвате име на модул, което отговаря на целта на кода. Тъй като това е демонстрация, можете да дефинирате името на модула, както следва:
под pivot_demo()
Името на модула завършва с End Sub, което е крайната команда на модул:
Край Под
2. Деклариране на променливи
В рамките на модула започнете с деклариране на променливи, за да съхраните някои дефинирани от потребителя стойности, които ще използвате в скрипта. Можете да използвате Dim израз за деклариране на променливи, както следва:
Dim PSsheet Като Работен лист, DSheet Като Работен лист
Dim PvtCache Като PivotCache
Dim PvtTable Като обобщена таблица
Dim PvtRange Като Обхват
Затъмняване на последния_ред Като Long, Last_Col Като Дълги
Dim sht1 като Вариант
Ще използвате тези променливи за следното:
- PSsheet: Целевият лист, където VBA ще създаде опорна точка.
- DSsheet: Листът с данни.
- PvtCache: Пивот кешът държи пивота.
- PvtTable: Обектът на обобщената таблица.
- PvtRange: Диапазон от данни за опорната точка.
- Last_Row и Last_Col: Последно попълнен ред и колона в листа с данни (DSheet).
- Sht1: Тази променлива е вариант.
3. Потискане на предупреждения и съобщения
Ненужните грешки, предупреждения и съобщения забавят вашите VBA кодове. Като потискате такива съобщения, можете значително да ускорите процеса.
Използвайте следния код:
На Грешка Възобновяване Следваща
с Приложение
.DisplayAlerts = Невярно
.ScreenUpdating = Невярно
Крайс
Където:
- При грешка Възобновяване Следващ: Тази клауза потиска всякакви грешки по време на изпълнение.
- Приложение: Приложението се отнася за MS Excel.
- DisplayAlerts: Свойството DisplayAlerts определя дали да се показват предупреждения.
- Актуализиране на екрана: Това свойство определя дали промените да се актуализират в реално време или само след като кодът приключи.
Когато този код се изпълнява, той потиска всички сигнали, предупреждения и съобщения, които Excel би показал в противен случай. Можете да изключите параметрите DisplayAlerts и ScreenUpdating, като зададете техните стойности на Невярно.
Към края на кода можете да ги включите отново, като зададете стойност като Вярно.
4. Изтрийте всички съществуващи обобщени листове
За да създадете нова обобщена таблица, имате две възможности. Първо, изтрийте съществуващия обобщен лист и използвайте VBA, за да създадете нов лист, за да съхранявате обобщения лист. Като алтернатива можете да използвате съществуващ работен лист, за да задържите опорната точка.
В това ръководство нека създадем нов обобщен лист за съхраняване на обобщената таблица.
The за всеки цикъл преминава през всеки лист в работната книга и съхранява името на листа в sht1 променлива. Можете да използвате всяко име на променлива (sht1), за да задържите името на листа. Цикълът преминава през всеки лист в текущата работна книга, търсейки такъв с конкретното име (Шарнирен болт).
Когато името на листа съвпада, той изтрива листа и преминава към следващия лист. След като кодът провери всички листове, той излиза от цикъла и преминава към следващата част от кода, която добавя нов лист, Шарнирен болт.
Ето как можете да го направите:
Завсекиsht1вActiveWorkbook.Работни листове
Ако sht1.Name = "Шарнирен болт" Тогава
sht1.Изтрий
КрайАко
Следващ sht1
Работни листове. Добавете. Име = "Шарнирен болт"
5. Дефиниране на източник на данни и обобщени листове
От съществено значение е да създадете променливи за съхраняване на референциите на Pivot и Data sheets. Те работят като преки пътища, които можете да използвате в останалата част от кода.
Задайте PSheet = Работни листове("Шарнирен болт")
Задайте DSheet = Worksheets("Данни")
6. Идентифицирайте последния използван ред и колона
Тази част от кода работи динамично, тъй като увеличава размера на последния попълнен ред и колона в данните.
Последен_ред = DSsheet. Клетки (редове. Брой, 1).Край (xlUp).Ред
Last_Col = DSsheet. Клетки (1, колони. Брой).Край (xlToLeft).Колона
Комплект PvtRange = DSheet. Клетки (1, 1).Преоразмеряване (Последен_ред, Последна_колона)
Където:
- Последен_ред: Променлива за съхраняване на последния попълнен номер на ред, т.е. 9995
- Последна_кола: Променлива за съхраняване на последния попълнен номер на колона, т.е. 21
- PvtRange: PvtRange препраща към целия диапазон от данни за опорната точка
7. Създайте Pivot Cache и Pivot Table
Основният кеш съдържа обобщената таблица; следователно трябва да създадете кеш, преди да създадете обобщена таблица. Трябва да използвате препратките към синтаксиса на VBA, за да направите основния кеш в рамките на основния лист.
Като се позовавате на обобщения кеш, трябва да създадете обобщена таблица. Като част от обобщената таблица можете да дефинирате листа, препратката към клетката и името на обобщената таблица.
Задайте PvtCache = ActiveWorkbook. PivotCaches. Създаване (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Клетки (2, 2), TableName:="MUODemoTable")
Задайте PvtTable = PvtCache. Създаване на обобщена таблица (TableDestination:=PSheet. Клетки (1, 1), име на таблица:="MUODemoTable")
Където:
- ActiveWorkbook: Текущата работна книга, в която имате данните и основния лист.
- PivotCaches. Създаване: Синтаксис по подразбиране за създаване на обобщен кеш.
- Тип на източника: Тъй като имате данните в работната книга, можете да я дефинирате като xlDatabase. Някои други опции включват xlКонсолидация, xlВъншен, или xlPivotTable.
- Изходни данни: Можете да се позовавате на предишния обобщен диапазон като изходни данни.
- Създаване на обобщена таблица: Команда по подразбиране за създаване на обобщена таблица.
- TableDestination: Трябва да посочите препратките към листа и клетките, където искате да създадете опорната точка.
- Име на таблица: Задайте име на обобщена таблица.
- Създаване на обобщена таблица: Команда по подразбиране за създаване на обобщена таблица в обобщения кеш.
8. Вмъкване на редове, колони, филтри и стойности
Тъй като обобщената таблица е готова, трябва да започнете да добавяте параметрите във филтрите, редовете, колоните и агрегираните стойности. Можете да използвате VBA осеви полета команда, за да започне декларирането на детайлите.
За да добавите филтърни стойности:
С ActiveSheet. обобщени таблици("MUODemoTable").PivotFields("Регион")
.Ориентация = xlPageField
Крайс
За да добавите стойности на ред:
С ActiveSheet. обобщени таблици("MUODemoTable").PivotFields("Подкатегория")
.Ориентация = xlRowField
Крайс
За да добавите стойности на колони:
С ActiveSheet. обобщени таблици("MUODemoTable").PivotFields("състояние")
.Ориентация = xlColumnField
Крайс
За да добавите агрегирани стойности:
С ActiveSheet. обобщени таблици("MUODemoTable").PivotFields("Продажби")
.Ориентация = xlDataField
.функция = xlSum
Крайс
Важно е да се отбележи, че трябва да посочите активния лист (Pivot sheet), последван от името на обобщената таблица и името на променливата. Когато трябва да добавите филтър(и), ред(ове) и колона(и), можете да превключвате между различни синтаксиси, които включват следното:
- xlPageField: За добавяне на филтри.
- xlRowField: За добавяне на редове.
- xlRowField: За добавяне на колони.
Накрая можете да използвате xlDataField команда за изчисляване на агрегираните стойности. Можете да използвате други агрегатни функции като xlSum, xlAverage, xlCount, xlMax, xlMin и xlProduct.
9. Изпълнение на кода на Excel VBA за създаване на автоматични завъртания
Накрая, когато цялата програма е готова, можете да я стартирате, като натиснете F5 или щракване върху играя бутон. Когато се върнете към обобщения лист във вашата работна книга, ще видите, че нова обобщена таблица е готова за преглед.
Ако искате да видите изпълнение стъпка по стъпка на това как командата за код се изпълнява ред по ред, можете да отидете до редактора на код и да натиснете F8 няколко пъти. По този начин можете да видите как работи всеки ред код и как VBA автоматично създава вашите опорни точки.
Научете се да кодирате автоматично обобщени таблици
Pivots не са ограничени само до MS Excel. Програмни езици като Python ви позволяват да създавате оптимизирани опорни точки само с няколко реда код.
Оптимизирането на данни не може да бъде по-лесно от това. Можете ефективно да избирате вашите команди в Python и да постигнете подобна на Excel структура на завъртане с лекота.