在不用刷新按钮的前提下,如何让pivot和数据源一起动起来呢?VBA之。
1. 首先要给数据源定义好名称,公式:
=OFFSET(数据源!$A$1,,,COUNTA(数据源!$A:$A),COUNTA(数据源!$1:$1))
2. 制作pivot时候,引用数据区域要写
3. 接下来针对数据源的tab要上vba代码了。
Private Sub Worksheet_Activate()
Dim pv As PivotTable, rng As Range, dFld As PivotField
Set pv = Sheet2.[b3].PivotTable
pv.RefreshTable
For Each rng In Worksheets("数据源").Range("Data").Rows(1).Cells
If VBA.InStr(1, strFld, "," & VBA.Trim(rng)) = 0 Then _
pv.AddDataField pv.PivotFields(rng.Value), " " & rng.Value, xlSum
Next rng
pv.ManualUpdate = False
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_Deactivate()
Dim pv As PivotTable
Set pv = Sheet2.[b3].PivotTable
For Each dFld In pv.PivotFields
strFld = strFld & "," & dFld.Name
Next
End Sub
4.插入一个模块,写上一句语言。
Public strFld As String '定义一个公共变量
到了这里以后你只要来回点pivot和数据源的tab标签。数据源里面的更新就开始对pivot table起作用了。