Если вы переключите Function
поля данных, оно автоматически получит новое имя, поэтому вы должны изменить имя позже (не раньше).
Вы можете Select Case
либо свой Combobox.Value
или ваш DataField.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
, он принадлежит предыдущему оператору With
ранее,который - в этом коде - должен быть полем данных сводки, а не списком.