2016-02-03 183 views
0

我在同一張工作表上有16個數據透視表,「Analytics Admin」,我記錄並清理了下面的宏(更新數據透視表源代碼之前的代碼)。它基本上是16次相同的代碼,唯一改變的是數據透視表名稱(MSP,MSP30,FSP,FSP30等)。是否可以一次更改所有數據透視表的報告過濾器?excel 2010 vba數據透視表報表過濾器更新

Worksheets("Analytics Admin").Activate 

'refreshes all data, clears all filters then filters 0 and blanks out of all custom range pareto pivot tables 

ActiveSheet.PivotTables("MSP").PivotCache.Refresh 
    ActiveSheet.PivotTables("MSP").PivotFields("count").ClearAllFilters 
    ActiveSheet.PivotTables("MSP").PivotFields("count").ShowAllItems = True 

    With ActiveSheet.PivotTables("MSP").PivotFields("count") 
     .PivotItems("0").Visible = False 
     .PivotItems("(blank)").Visible = False 
    End With 
    ActiveSheet.PivotTables("MSP").PivotCache.Refresh 

ActiveSheet.PivotTables("FSP").PivotCache.Refresh 
    ActiveSheet.PivotTables("FSP").PivotFields("count").ClearAllFilters 
    ActiveSheet.PivotTables("FSP").PivotFields("count").ShowAllItems = True 

    With ActiveSheet.PivotTables("FSP").PivotFields("count") 
     .PivotItems("0").Visible = False 
     .PivotItems("(blank)").Visible = False 
    End With 
    ActiveSheet.PivotTables("FSP").PivotCache.Refresh 
+0

你有沒有考慮過的所有數據透視表在紙張上循環? – teylyn

+0

不知何故,我已經成功地從不使用循環之前,你可以詳細說明一點嗎? –

回答

0

沿東西線(未測試,只需鍵入到這裏)

dim ws as Worksheet 
    set ws = ThisWorkbook.Worksheets("Analytics Admin") 
    dim pt as PivotTable 
     For Each pt In ws.PivotTables 
'   Debug.Print Pivot.Name 
      pt.PivotFields("count").ClearAllFilters 
      pt.PivotFields("count").ShowAllItems = True 

      With pt.PivotFields("count") 
       .PivotItems("0").Visible = False 
       .PivotItems("(blank)").Visible = False 
      End With 
      pt.PivotCache.Refresh 
      pt.refreshTable 
      pt.Update 
     Next 
+0

這段代碼部分工作,但出於某種原因,某些數據透視表拋出和錯誤在'pt.PivotFields(「count」)。ClearAllFilters'和其他在'pt.PivotFields(「count」)。 ShowAllItems = True'。運行時1004無法獲取數據透視表的PivotFeilds屬性姑娘。 –

0

如果您有Excel 2010或更高版本,以及大多數(希望所有的)這些支點的共享完全相同的數據源,你可以做很少或沒有循環。只需在「count」字段設置一個切片機,然後將其連接到所有的數據透視表(右鍵單擊切片機,然後選擇「Report Connections」),然後您只需在其中一個數據透視表上運行代碼,別人會自動更新。

您可以某處隱藏切片機,如果你不希望用戶點擊它。

+0

我喜歡這個想法。我使用的是2010年,但到目前爲止,我只能連接2個數據透視表,而這主要是偶然事件。我似乎無法通過任何方式連接頁面上的所有表格。 –

+0

我忘了提及Slicers只能連接到共享相同PivotCache的PivotTables(即它們共享完全相同的數據源)。我會將其添加到我的答案中。如果您的大多數樞軸共享相同的數據源,請將切片器添加到其中一個切片器,將其連接到其他切片器,然後使用代碼將其中的一個同步到其他緩存中。否則,泰林的代碼將是最好的選擇。 – jeffreyweir

+0

沒問題,確實有多個支點的切片機在一個數據透視表上使用了另一個數據集中的假數據。我將嘗試合併源數據,並再次發佈 –

相關問題