将脚本从DataField更改为CubeField VBA?

时间:2019-03-27 13:35:43

标签: vba pivot-table data-modeling cube datafield

我有一个数据透视表和一个简单的按钮,当按下它们时,我希望它将数据透视表DataField从“ Pax”更改为“ Total Revenue”。然后将最大到最小排序。 当下面的脚本只是一个普通的数据透视表时,下面的脚本可以正常工作,但是现在我已将其从数据模型更改为数据透视表,并且VBA无法正常工作。

我相信我需要将VBA代码更改为.CubeFields等,但之前从未做过,所以我非常迷失。

私人子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

结束子

如果DataField / CubeField当前显示“ Pax”,则“ AO5”单元格将显示“总收入”,反之亦然。

数据透视表在第二列中显示Pax /总收入,第一列显示“主要游览代码”

数据透视表从数据模型[BookingsTable]馈入

我已经阅读了各种论坛,并尝试了许多事情,但是没有任何效果,我真的需要帮助。

示例文件在这里: https://drive.google.com/open?id=1ipEGhcZIiscWWy6HzWWdAomt7nATDQDA

非常感谢:) CM

0 个答案:

没有答案