Как сортировать поля сводной в алфавитном порядке

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

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

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

Код макроса

Sub SortirovatPolyaSvodnoiPoAlfavitu()
'Шаг 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.PivotFields
pf.AutoSort xlAscending, pf.Name
Next pf
End Sub

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

  1. Шаг 1 объявляет две переменные объекта, используя Pt в качестве контейнера памяти для сводной таблицы и Pf в качестве контейнера для памяти наших полей данных. Это позволяет макросу перебрать все поля данных в сводной таблице.
    Активная ячейка должна находиться внутри сводной таблицы для запуска макроса. Когда курсор находится внутри определенной сводной таблицы, действие макроса выполняется на этой оси.
  2. На шаге 2 мы устанавливаем переменную Pt на имя сводной таблицы, на которой найдена активная ячейка. Мы делаем это, используя свойство ActiveCell.PivotTable.Name, чтобы получить имя целевой сводной.
    Если активная ячейка не находится внутри сводной таблицы, выдается ошибка. Именно поэтому мы используем On Error Resume Next Statement. Это говорит Excel продолжить макро, если есть ошибка.
  3. Шаг 3 проверяет, заполнена ли переменная PT сводной таблицы объекта. Если переменная PT установлена в Nothing, активная ячейка была не на сводной таблице, таким образом, сводной таблице не может быть присвоена переменная. Если дело обстоит именно так, то макрокоманда помещает окно сообщения, чтобы уведомить пользователя, а затем выходит
    из процедуры.
  4. И, наконец, мы используем оператор For Each, чтобы перебирать поля сводной. Каждый раз, когда выбрано новое поле сводной, мы используем метод AutoSort, чтобы сбросить автоматические правила сортировки для поля. В этом случае мы сортируем все поля в порядке возрастания. После того как все поля данных были оценены, макрос заканчивается.

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

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

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