использование vba для сортировки обновлений сводки при изменении имени поля сводки - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть сводная таблица, состоящая из 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

Что я делаюнеправильно, чтобы отсортировать мою таблицу по последнему добавленному периоду данных?

Ниже приведена некоторая часть макета сводки и список доступных полей сводки: pivot_sort.png Я хочучтобы отсортировать сводку по столбцу / полю со стрелкой, обозначенным стрелкой

, скрипт pfvalue отлично считывает правильное имя поля: pivot_sort.png

, но когда я добираюсь доПри фактической сортировке я получаю ошибку ( ошибка 438 во время выполнения: это свойство или метод не поддерживаются этим объектом ): pivot_sort2.png

, причем этоРасположение / дизайн сводной диаграммы:

pivot_sort4.png

Когда я запускаю макрос-рекордер, и я просто вручную сортирую сводку по этому последнему столбцу, это скриптмакрос записи создает:

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отладки.

1 Ответ

0 голосов
/ 21 сентября 2018

Я нашел проблему.

эта строка ниже пропускает только одну букву:

Worksheets("pivot").PivotTables("Draaitabel1").PivotField("Product") _
 .AutoSort xlDescending, pfvalue

Вместо этого должно было быть: Worksheets ("pivot"). PivotTables ("Draaitabel1"). PivotField s ("Product") _ .AutoSort xlDescending, pfvalue

Теперь он сортируется идеально.

...