У меня есть сводная таблица, состоящая из 43 сводных полей.39 из них используются для полей данных.Каждые 4 недели данные обновляются новыми данными, когда первое из этих 39 полей данных больше не содержится в данных, а в конце добавляется новое поле данных.
У меня есть скрипт, который удаляет все данныеполя и их добавить все 39 полей данных, которые необходимы.Осталось только отсортировать данные после этого, используя (значения) последнего поля данных.
Я думал, что смогу получить имя последнего поля данных и использовать его в качестве строки длясценарий сортировки и я бы сделал.Но это оказалось не так, как я надеялся.
У меня есть это для чтения / получения значения поля поворота, которое я хочу использовать для сортировки:
Sub AsSum()
Dim pf As PivotField
Dim pfvalue As String
With Worksheets("pivot").PivotTables("Draaitabel1")
pfvalue = .PivotFields(42).Name
.ManualUpdate = True
For Each pf In .DataFields
With pf
.Function = xlSum
.Caption = "." & .SourceName
.NumberFormat = "#,##0"
End With
Next pf
.ManualUpdate = False
End With
Worksheets("pivot").PivotTables("Draaitabel1").PivotCache.Refresh
Worksheets("pivot").PivotTables("Draaitabel1").PivotField("Product") _
.AutoSort xlDescending, pfvalue
End Sub
Что я делаюнеправильно, чтобы отсортировать мою таблицу по последнему добавленному периоду данных?
Ниже приведена некоторая часть макета сводки и список доступных полей сводки: Я хочучтобы отсортировать сводку по столбцу / полю со стрелкой, обозначенным стрелкой
, скрипт pfvalue отлично считывает правильное имя поля:
, но когда я добираюсь доПри фактической сортировке я получаю ошибку ( ошибка 438 во время выполнения: это свойство или метод не поддерживаются этим объектом ):
, причем этоРасположение / дизайн сводной диаграммы:
Когда я запускаю макрос-рекордер, и я просто вручную сортирую сводку по этому последнему столбцу, это скриптмакрос записи создает:
ActiveSheet.PivotTables("Draaitabel1").PivotFields("Product").AutoSort _
xlDescending, ".Qw 32, 2018", ActiveSheet.PivotTables("Draaitabel1"). _
PivotColumnAxis.PivotLines(39), 1
Я пытался использовать это и добавить последний рart для моего сценария, чтобы увидеть, если это что-то меняет, но это не так, вот как я добавил его в свой сценарий:
Worksheets("pivot").PivotTables("Draaitabel1").PivotCache.Refresh
Worksheets("pivot").PivotTables("Draaitabel1").PivotField("Product") _
.AutoSort xlDescending, pfvalue, Worksheets("pivot").PivotColumnAxis.PivotLines(39), 1
End Sub
Тем не менее эти последние строки для фактической сортировки подсвечиваются желтым цветом с помощью vbaотладки.