10.3 新字段自动进入数据透视表布局

使用定义名称法或表方法创建的动态数据透视表,对于数据源中新增的行记录,刷新数据透视表后可以自动显示在数据透视表中,对于数据源中新增的列字段,刷新数据透视表后只能显示在【数据透视表字段列表】中,需要重新布局后才可以显示在数据透视表中,如图10-12所示。

img223b

图10-12 新增的列字段存在于【数据透视表字段列表】中

示例10.3 动态数据透视表新增列字段

借助VBA代码,可以让新增的列字段自动显示在数据透视表中,请参照以下步骤。

步 骤1img01

在数据透视表所在的工作表标签上单击鼠标右键,在弹出的快捷菜单中选择【查看代码】命令,进入到VBA编辑器窗口,在VBA代码窗口的代码区域中输入以下代码,如图10-13所示。

Dim strfld

Private Sub worksheet_activate()

Dim pv As PivotTable, rng As Range, dfld As PivotFieldIf strfld = "" Then Exit SubSet pv = Sheet1.[b3].PivotTablepv.RefreshTable

For Each rng In Worksheets(“销售数据”).Range(“data”).Rows(1).CellsIf VBA.InStr(1, strfld, "," & VBA.Trim(rng)) = 0 Then _pv.AddDataField pv.PivotFields(rng.Value), " " & rng.Value, xlSumNext rngpv.ManualUpdate = FalseApplication.ScreenUpdating = True

End Sub

Private Sub worksheet_deactivate()Dim pv As PivotTableSet pv = Sheet1.[b3].PivotTablestrfld = ""

For Each dfld In pv.PivotFieldsstrfld = strfld & "," & dfld.Name

Next

End Sub

img224a

图10-13 在VBA编辑器窗口中输入代码

步 骤2img01

插入“模块1”并在代码窗口中输入以下代码,如图10-14所示。

Public strFld As String

步 骤3img01

按下<Alt+F11>组合键切换到Excel窗口。

从现在开始,在“数据源”中新增行列数据后,只要激活数据透视表所在的工作表,数据透视表中就会立即自动显示新增的列字段,如图10-15所示。

img224b

图10-14 在VBA代码窗口中输入“模块1”代码

img224c

图10-15 数据透视表新增行列字段自动显示