01 Что делает макрос
При создании сводной таблицы Excel пытается вам помочь, сопоставив каждый заголовок поля с суммой, количеством или операцией, которую вы используете. Часто это только мешает вашей отчетности. Вам нужны названия, которые соответствуют исходным данным.
Корректировать названия полей можно вручную, но только по одному. Этот макрос позволяет автоматизировать процесс.
В идеале, название каждого элемента данных соответствует имени поля из источника данных. К сожалению, сводные таблицы не позволят вам получить точное название имени полей данных. Чтобы исправить эту проблему, нужно добавить пробел в конце имени поля. Excel считает, что имя поля, написанное с пробелом, отличается от исходного имени в поле данных. При этом читателям таблиц не заметен пробел после имени.
Этот макрос использует именно этот способ, чтобы переименовать поля данных. Он перебирает каждое поле данных в сводной таблице, а затем сбрасывает каждый Заголовок, чтобы сделать его соответствующим названию в источнике данных и добавляет пробел.
02 Код макроса
Sub
IzmenitNazvaniyaVsehPoleiSvodnoi()
'Шаг 1: Объявляем переменные
Dim
pt
As
PivotTable
Dim
pf
As
PivotField
'Шаг 2: Проверяем, что выделена сводная таблица
On
Error
Resume
Next
Set
pt = ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
'Шаг 3: Выход, если ячейка находится не в сводной таблице
If
pt
Is
Nothing
Then
MsgBox
"Вы должны поместить курсор в сводную таблицу."
Exit
Sub
End
If
'Шаг 4: Цикл по всем полям сводной таблицы, меняем названия
For
Each
pf
In
pt.DataFields
pf.Caption = pf.SourceName & Chr(160)
Next
pf
End
Sub
03 Как работает макрос
1. Шаг 1 объявляет две переменные объекта. Он использует РТ в качестве контейнера памяти для нашей сводной таблицы и PF в качестве контейнера памяти для полей данных. Это позволяет макросу перебрать все поля данных в сводной таблице. Этот макрос разработан таким образом, что мы определяем сводную таблицу на основе активной ячейки. Другими словами, активная ячейка должна быть внутри сводной таблицы до запуска этого макроса.
2. Шаг 2 присваиваем активной сводной таблице переменную РТ. Мы делаем это, используя свойство ActiveCell.PivotTable.Name, чтобы получить имя целевого диапазона. Если активная ячейка не находится внутри сводной таблицы, выдается ошибка. Именно поэтому макрос использует On Error Resume Next Statement. Это говорит Excel продолжить макрос, если есть ошибка.
3. Шаг 3 проверяет переменную РТ - если она пустая, то выводим пользователю сообщение о том, что необходимо поместить курсор в сводную таблицу и выходим из процедуры.
4. Если макрос достигает Шага 4, значит активная ячейка была в сводной таблице. Оператор For Each перебирает каждое поле данных. Каждый раз, когда выбрано новое поле сводной, макрос изменяет имя поля, установив свойство Caption в соответствии с SourceName. Свойство SourceName возвращает имя поля, сопоставив с исходными данными. К этому имени макрос добавляет неразрывный пробел: Chr (160).
Каждый символ имеет исходный код ASCII, похожий на серийный номер. Так, например, строчная буква А имеет код ASCII 97, строчная буква С имеет ASCII-код 99. Точно так же невидимые символы, такие как пробел, тоже имеют код. Вы можете использовать невидимые символы в макросе, передавая свой код с помощью функции CHR.
После того, как название было изменено, макрос переходит к следующему полю данных. После того как все поля данных были оценены, макрос заканчивается.
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
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь