У меня есть сводная таблица и простая кнопка, при нажатии которой я хочу изменить сводную таблицу DataField с «Pax» на «Общий доход». А затем сортировать от крупнейших до самых маленьких.
Приведенный ниже скрипт работал нормально, когда это была просто обычная сводная таблица, но теперь я изменил ее на сводную таблицу из моей модели данных, и VBA не работает.
Я считаю, что мне нужно изменить код VBA на .CubeFields и т. Д., Но никогда раньше этого не делал, поэтому я очень, очень растерялся.
Private Sub CommandButton1_Click ()
Dim pt1 As PivotTable
Dim Field1 As PivotField
Dim pi As PivotItem
Dim sumField As String
sumField = Range("AO5").Value
'-----Pivot1-----
Set pt1 = PivotTables("PivotTable1")
pt1.DataFields(1).Orientation = xlHidden
pt1.PivotFields(sumField).Orientation = xlDataField
pt1.AllowMultipleFilters = True
pt1.RefreshTable
If sumField = "Total Revenue" Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("Main Tour Code").AutoSort _
xlDescending, "Sum of Total Revenue", ActiveSheet.PivotTables("PivotTable1"). _
PivotColumnAxis.PivotLines(1), 1
Else
ActiveSheet.PivotTables("PivotTable1").PivotFields("Main Tour Code").AutoSort _
xlDescending, "Sum of Pax", ActiveSheet.PivotTables("PivotTable1"). _
PivotColumnAxis.PivotLines(1), 1
End If
End Sub
В ячейке «AO5» будет отображаться «Общий доход», если в DataField / CubeField в данный момент отображается «Pax», и наоборот.
В сводной таблице отображается Pax / Total Доход во втором столбце, в первом столбце отображается «Код основного тура»
Сводка подается из модели данных [BookingsTable]
Я читал различные форумы и перепробовал много вещей, но ничего не работает, и мне действительно нужна помощь.
Пример файла находится здесь:
https://drive.google.com/open?id=1ipEGhcZIiscWWy6HzWWdAomt7nATDQDA
Большое спасибо :)
CM