Сначала я предлагаю использовать ссылку на вашу сводную таблицу, чтобы сократить код. После этих двух строк вы можете заменить все «ActiveSheet.PivotTables (« ResumenRuido »)» на «pt».
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("ResumenRuido")
Вместо PivotField.AutoGroup
я предлагаю использовать специальный метод разгруппировки / группирования, чтобы гарантировать получение желаемых периодов, e. г. годы, кварталы и месяцы:
With pt.PivotFields("Fecha")
' if already grouped, first ungroup it:
If .TotalLevels > 1 Then .DataRange.Cells(1).Ungroup
' sort it:
.AutoSort Order:=xlAscending, Field:="Fecha"
' group it by wanted periods:
' seconds, minutes, hours, days, months, quarters, years
.DataRange.Cells(1).Group _
Periods:=Array(False, False, False, False, True, True, True)
End With
Ошибка с группировкой PivotField
Я могу подтвердить, что есть ошибка (по крайней мере, в моей версии Excel "Office 365 Pro Plus, Версия 1902, Build 11328.20100 нажмите и запустите"). Если я вручную выберу группировку для сводного поля с датами, самый низкий выбранный период всегда будет , а не показан в качестве дополнительного сводного поля.
Пример: если я группирую годы / кварталы / месяцы вручную или с помощью a. м. код, месяцы не отображаются!
Обход
Сгруппировать с дополнительным более низким периодом (который в некоторых версиях Excel не отображается), а затем скрыть его, если он отображается:
.DataRange.Cells(1).Group _
Periods:=Array(False, False, False, True, True, True, True)
' ...
Dim pf As PivotField
For Each pf In pt.PivotFields
Select Case pf.Name
Case "Fecha", "Quarters", "Months", "Days"
pf.Orientation = xlHidden
End Select
Next pf