2016-02-29 458 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

相关问题