01 Что делает макрос
Актуально для Excel ранних версий
Если вы работаете со сводными таблицами, у вас есть необходимость анализировать один набор данных несколькими способами. В большинстве случаев этот процесс требует создания отдельных сводных таблиц из одного источника данных.
Проблема заключается в том, что каждый раз, когда вы создаете сводную таблицу, вы храните копию источника данных в кэше. Каждый кэш, который создается увеличивает использование памяти и размер файла. Побочным эффектом этого будет то, что ваша электронная таблица увеличивается.
Начиная с Excel 2007 Microsoft распознает, когда вы создаете сводную таблицу из того же источника, что и существующая сводная таблица. Это снижает случаи создания избыточного кэша.
Кроме уменьшения размера файла есть и другие преимущества единого кэш:
- Вы можете обновить одну сводную таблицу – и сразу обновятся остальные.
- При добавлении вычисляемого поля в одну сводную таблицу оно станет доступно и в других сводных,
- При добавлении вычисляемого элемента в одну сводную таблицу, он появится и в других,
- Любая группировка или разгруппировка появится во всех сводных таблицах с общим кэшем
В этом примере, все сводные таблицы в кэш используют PivotTable1 на всех листах.
02 Код макроса
Sub
EdiniiKeshSvodnihTablic()
'Шаг 1: Объявляем переменные
Dim
ws
As
Worksheet
Dim
pt
As
PivotTable
'Шаг 2: Запускаем цикл через все листы книги
For
Each
ws
In
ThisWorkbook.Worksheets
'Шаг 3: Запускаем цикл через все сводные таблицы
For
Each
pt
In
ws.PivotTables
pt.CacheIndex = _
Sheets(
"Регион"
).PivotTables(
"Сводная таблица1"
).CacheIndex
Next
pt
Next
ws
End
Sub
03 Как работает макрос
1. Шаг 1 объявляет объект под названием WS. Он создает контейнер памяти для каждого рабочего листа. Также объявляем объект под названием PT, который содержит каждую сводную таблицу.
2. Шаг 2 запускаем цикл, говоря Excel, что мы хотим охватить все рабочие листы в этой книге. Обратите внимание, что мы используем ThisWorkbook вместо ActiveWorkbook.
3. Шаг 3 Цикл проходит через все сводные таблицы на каждом листе, а затем меняет CachIndex на тот, который используется Сводной таблицей1. После того, как все сводные таблицы на листе пройдены, макрос переходит к следующему листу. После того, как все листы были пройдены - макрос заканчивается.
04 Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
05 Скачать файл
Автор проекта
Дмитрий Якушев
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель - помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Подписывайтесь на нас в соц.сетях:
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь