2016-02-29 455 views
0

我有一個包含多個字段的數據透視表。其中一個領域是評論。當我刷新表格時,註釋字段僅設置爲(空白)。我已經尋找了一種方法,使pivottable默認不選擇空白,但不是運氣。選擇所有的pivotitems並取消選擇(空白)

我寫下面的代碼來取消選中(空格)並選擇所有其他的pivotitems。代碼有效,但運行時間超過5分鐘。

任何關於如何加快代碼或更好的方式來取消選擇(空白)和全選的建議將不勝感激。

`Dim ary As Variant, RVary As Variant 
Dim StartTime As Double 
Dim SecondsElapsed As Double 
StartTime = Timer 
ary = Array("CM PSL", "NM PSL", "CQ PSL", "NQ PSL", "CM Country", "NM Country", "CQ Country", "NQ Country", "QTR Summary", "TY PSL", "TY Country") 
RVary = Array("CMRVCS", "NMRVCS", "CQRVCS", "NQRVCS") 
Application.ScreenUpdating = False 
On Error Resume Next 
For Each i In ary 
Sheets(i).Activate 
    For Each j In RVary 
     With ActiveSheet.PivotTables("RVCS") 
      With .PivotFields(j) 
       For k = 2 To .PivotItems.Count 
        .PivotItems(k).Visible = True 
       Next k 
       .PivotItems(1).Visible = False 
      End With 
     End With 
    Next j 
Next i 

Erase array1 
Erase RVCS 

Application.ScreenUpdating = True 
Sheets("CM PSL").Select 
SecondsElapsed = Round(Timer - StartTime, 2) 
MsgBox "This code ran successfully in " & SecondsElapsed & " seconds", vbInformation` 

回答

0

好吧我有一個解決方案,將運行時間減少到30秒。這是新的循環。

For Each i In ary 
    Sheets(i).Activate 
     For Each j In RVary 
      ActiveSheet.PivotTables("RVCS").PivotFields(j).ClearAllFilters 
      With ActiveSheet.PivotTables("RVCS").PivotFields(j) 
       .PivotItems("(blank)").Visible = False 
      End With 
     Next j 
Next i 
+0

可以使它更快通過1)不激活所述片材(只是刪除該行)和2)將下面的行的對每個j行之前: 數據透視表(「RVCS」)ManualUpdate =真 ...然後在下一個J行後面添加: 數據透視表(「RVCS」)。ManualUpdate = False 停止數據透視表更新,直到完成所有更改。 – jeffreyweir

相關問題