0

いくつかのピボット フィールドがあり、いくつかの条件でフィールドのピボット項目をマークしたいと考えています。私は使用してみました.visibleが、これも使用application.screenupdatingapplication.displayfiltersました。ただし、ピボットアイテムを選択または削除することはできません。それぞれの返信に本当に感謝します。

Filter_PivotField_by_Date_Range. これは、フィールド名と比較したい日付を指定するためだけにメインで呼び出している関数です。2 if 条件の後、フィールド内のピボット項目をマーク (選択/ティックマーク) し、それ以外の場合はマークを外したり、他のものを選択したりしません。もう一方を非表示にしてから、Sub を終了します。

ご不明な点がございましたら、お気軽にお問い合わせください。コメントやコードをいただければ幸いです。

    Sub Filter_PivotField_by_Date_Range(pvtField As PivotField, it1 As Date, it2 As Date)

        Dim bTemp As Boolean, i As Long
        Dim dtTemp As Date, dtTemp1 As Date


        dtTemp = Format(CDate(it1), "dd/mm/yyyy")
        dtTemp1 = Format(CDate(it2), "dd/mm/yyyy")
        On Error Resume Next

         With pvtField
          For i = 1 To .PivotItems.Count

           dtFrom = .PivotItems(i)
           If (dtTemp <= dtFrom) Then
               If (dtTemp1 >= dtFrom) Then
               On Error Resume Next
                       Application.ScreenUpdating = False
                       Application.DisplayAlerts = False
                       .PivotItems(i).Visible = True
                       MsgBox (dtFrom)
               Else
                  Application.ScreenUpdating = True
                  Application.DisplayAlerts = True
                   Exit Sub
               End If

            End If
          Next i

        End With

    End Sub
4

3 に答える 3

0

Excel 2010 以降を使用していて、これらのピボットテーブルが同じ PivotCache を共有している (つまり、同じデータ ソースを持っている) 場合は、スライサーを設定して、それを他のピボットテーブルに接続するだけです。次に、一方に加えた変更は、自動的に他のものに反映されます (スライサーを右クリックし、[レポート接続] を選択します)。

コードが失敗する理由について、使用している Excel のバージョンと、ピボットフィールドの数値形式を教えてください。Excel 2007 または 2010 を使用していて、米国以外の地域の日付設定を使用していて、ピボットフィールドの数値形式が [一般] に設定されている場合、Date 変数を認識するときに VBA が失敗する Excel のバグが原因で、コードが失敗していると思われます。(ソース データに空白がある場合、数値形式は [全般] に固定されます。これらの空白を取り除く必要があります)。

はこれについてここに書きました
。フィールドの数値形式を変更することとは別に、Excel 2010 を使用している場合は、コメントからMicheal のアプローチを試すこともできます。

この SO スレッドにも解決策があるようです。

詳細については、次のリンクを参照してください。

この PivotItem.Visible 呼び出しが TypeMismatch エラーをスローするのはなぜですか? https://social.msdn.microsoft.com/Forums/office/en-US/01cb61c7-5e68-4a45-aeff-a70c6dbfe00f/excel-2007-accessing-pivotitemvisible-gives-error-if-the-field-item-値は日付です

于 2016-02-17T18:31:35.713 に答える
0

私は以下のものを試してみましたが、うまくいきました。可能であれば、ピボットを同じ日付で共有してください。

    Option Explicit
    Sub Macro7()
    Dim StartDate As Date
    Dim EndDate As Date
    Dim pvtDATE As Date
    Dim pvtField As PivotField
    Dim x As PivotItem
    Dim it1
    Dim it2
    Dim y
    it1 = "2/2/2016"
    it2 = "2/20/2016"

    Set pvtField = Excel.Sheets("UrSheet").PivotTables("PivotTable3").PivotFields(2)

    StartDate = Format(CDate(it1), "dd/mm/yyyy")
    EndDate = Format(CDate(it2), "dd/mm/yyyy")


            For Each x In pvtField.PivotItems
            If (x.Value <> "(blank)") Then
             pvtDATE = Format(x.Value, "dd/mm/yyyy")

                If (StartDate <= pvtDATE) Then
                    If (EndDate >= pvtDATE) Then
                        x.Visible = True
                    Else
                        x.Visible = False
                    End If
                Else
                    x.Visible = False
                End If
            End If
            Next

    End Sub
于 2016-01-22T14:42:26.003 に答える