0

複数のフィールドを持つピボット テーブルがあります。フィールドの 1 つはコメント用です。テーブルを更新すると、コメント フィールドが (空白) のみに設定されます。ピボットテーブルをデフォルトで空白を選択しないようにする方法を探しましたが、運はありません。

以下のコードを書いて、チェックを外し(空白)、他のすべてのピボットアイテムを選択します。コードは機能しますが、実行に 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`
4

1 に答える 1

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
于 2016-02-29T22:14:34.497 に答える