Как изменить названия всех полей сводной в Excel

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

Как макрос работает

В идеале, название каждого элемента данных соответствует имени поля из источника данных. К сожалению, сводные таблицы не позволят вам получить точное название имени полей данных, как в поле источника данных. Чтобы решить это, нужно добавить пробел в конце имени поля. Excel считает, что имя поля (с пробелом) отличается от исходного Имя поля данных. Косметически читателям таблиц не заметен пробел после имени.
Этот макрос использует этот способ, чтобы переименовать поля данных. Он перебирает каждое поле данных в сводной таблице, а затем сбрасывает каждый Заголовок, чтобы соответствовать его полю в источнике данных, плюс пробел.

Код макроса

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

Как этот код работает

  1. Шаг 1 объявляет две переменные объекта. Он использует РТ в качестве контейнера памяти для нашей сводной таблицы и PF в качестве контейнера памяти для полей данных. Это позволяет макросу перебрать все поля данных в сводной таблице. Этот макрос разработан таким образом, что мы выводим сводную таблицу на основе активной ячейки. Другими словами, активная ячейка должна быть внутри сводной таблицы для запуска этого макроса. Мы предполагаем, что когда курсор находится внутри определенной сводной таблицы, мы хотим выполнить действие макроса в этой строке.
  2. Шаг 2 устанавливает переменную ST к имени сводной таблице, в которой найдена активная ячейка. Мы делаем это, используя свойство ActiveCell.PivotTable.Name, чтобы получить имя целевого поля.
    Если активная ячейка не находится внутри сводной таблицы, выдается ошибка. Именно поэтому мы используем On Error Resume Next Statement. Это говорит Excel продолжить макро, если есть ошибка.
  3. На шаге 3, переменная РТ заполняет сводную таблицу объекта. Если переменная РТ установлена в Nothing, активная ячейка не d сводной таблице, таким образом, поэтому нельзя было назначить переменную сводную таблицу. Если это так, то мы говорим пользователю в окне сообщения, а затем мы выходим из процедуры.
  4. Если макрос достигает Шаг 4, он успешно указал на сводную таблицу. Оператор For Each перебирает каждое поле данных. Каждый раз, когда выбрано новое поле сводной, макрос изменяет имя поля, установив свойство Caption в соответствии SourceName месторождения. Свойство SourceName возвращает имя поля, сопоставив в исходных данных источника. В связи с этим именем, макрос сцепляет неразрывный пробел: Chr (160). Каждый символ имеет исходный код ASCII, похожий на серийный номер. Так, например, строчная буква А имеет код ASCII 97, строчная буква С имеет ASCII-код 99. Точно так же, невидимые символы, такие как пробел тоже имеют код. Вы можете использовать невидимые
  5. символы в макро, передавая свой код с помощью функции CHR.
  6. После того, как название было изменено, макрос переходит к следующему полю данных.
  7. После того как все поля данных были оценены, макрос заканчивается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
Оцените статью
Добавить комментарий