Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在数据透视表上从总和切换到平均值?_Excel_Vba_Pivot Table - Fatal编程技术网

Excel 如何在数据透视表上从总和切换到平均值?

Excel 如何在数据透视表上从总和切换到平均值?,excel,vba,pivot-table,Excel,Vba,Pivot Table,我正在创建一个带有“Sum”和“Average”的组合框。这样,我想将数据透视表的值从sum切换到average,反之亦然 因此,Value字段有3列。我还有另一个代码,可以根据我点击的按钮来显示每一个。示例:如果单击2016,透视表上只显示2016值 如何从“总和”改为“平均” 如果您切换数据字段的函数,它会自动获得一个新名称,因此您必须在之后(而不是之前)更改名称 您可以选择Case您的组合框.Value或数据字段.Caption 下面是一个例子: Private Sub ComboBox2

我正在创建一个带有“Sum”和“Average”的组合框。这样,我想将数据透视表的值从sum切换到average,反之亦然

因此,Value字段有3列。我还有另一个代码,可以根据我点击的按钮来显示每一个。示例:如果单击2016,透视表上只显示2016值

如何从“总和”改为“平均”


如果您切换数据字段的
函数
,它会自动获得一个新名称,因此您必须在之后(而不是之前)更改名称

您可以
选择Case
您的
组合框.Value
数据字段.Caption

下面是一个例子:

Private Sub ComboBox2_Change()
    Dim pt As PivotTable

    Set pt = ActiveSheet.PivotTables("PivotTable1")

    With pt.DataFields(1)
        Select Case ActiveSheet.ComboBox2.Value
        Case "Average"
            If .Caption = "Sum of 2016" Then
                .Function = xlAverage
                .Caption = "Average of 2016"
            ElseIf .Caption = "Sum of 2017" Then
                .Function = xlAverage
                .Caption = "Average of 2017"
            End If
        Case "Sum"
            If .Caption = "Average of 2016" Then
                .Function = xlSum
                .Caption = "Sum of 2016"
            ElseIf .Caption = "Average of 2017" Then
                .Function = xlSum
                .Caption = "Sum of 2017"
            End If
        End Select
    End With
End Sub

一般提示:如果您使用
.Function
.Caption
,则它属于前面的
语句,在此代码中,该语句必须是透视的数据字段,而不是组合框。

首先,两个
案例中都有2个
If
和1个
End If
Private Sub ComboBox2_Change()
    Dim pt As PivotTable

    Set pt = ActiveSheet.PivotTables("PivotTable1")

    With pt.DataFields(1)
        Select Case ActiveSheet.ComboBox2.Value
        Case "Average"
            If .Caption = "Sum of 2016" Then
                .Function = xlAverage
                .Caption = "Average of 2016"
            ElseIf .Caption = "Sum of 2017" Then
                .Function = xlAverage
                .Caption = "Average of 2017"
            End If
        Case "Sum"
            If .Caption = "Average of 2016" Then
                .Function = xlSum
                .Caption = "Sum of 2016"
            ElseIf .Caption = "Average of 2017" Then
                .Function = xlSum
                .Caption = "Sum of 2017"
            End If
        End Select
    End With
End Sub