したがって、Excelの1つのシートに複数のピボットテーブルがあります。行ラベルに月の長いリストがあります。レポートフィルターは名前でフィルター可能です。ピボットのすべての列は、単なるデータの合計です。
私が探しているのは(そしてマクロがそれを行う唯一の方法だと思います)、そのシートのピボットの1つのフィルターを変更し、それだけで他のピボットを更新できるようにする方法です。変更したもののフィルター(レポートと行ラベルの両方)を模倣するシート。他のピボットテーブルでは、他に何も変更しないでください。フィルターだけです。
残念ながら、私は文字通りvbaのコーディングについて何も知りません(Javaなどを少し知っていますが、マクロコーディングを行ったことがありません)。必要なことの一部を実行するマクロをインターネットからコピーすることができました。レポートフィルターは更新されますが、行ラベルフィルターの日付は更新されません。そのためのコーディングは次のとおりです。
Option Explicit
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
On Error Resume Next
Dim wsMain As Worksheet
Dim ws As Worksheet
Dim ptMain As PivotTable
Dim pt As PivotTable
Dim pfMain As PivotField
Dim pf As PivotField
Dim pi As PivotItem
Dim bMI As Boolean
On Error Resume Next
Set wsMain = ActiveSheet
Set ptMain = Target
Application.EnableEvents = False
Application.ScreenUpdating = False
'change all fields for all pivot tables on active sheet
For Each pfMain In ptMain.PageFields
bMI = pfMain.EnableMultiplePageItems
For Each pt In wsMain.PivotTables
If pt <> ptMain Then
pt.ManualUpdate = True
Set pf = pt.PivotFields(pfMain.Name)
bMI = pfMain.EnableMultiplePageItems
With pf
.ClearAllFilters
Select Case bMI
Case False
.CurrentPage = pfMain.CurrentPage.Value
Case True
.CurrentPage = "(All)"
For Each pi In pfMain.PivotItems
.PivotItems(pi.Name).Visible = pi.Visible
Next pi
.EnableMultiplePageItems = bMI
End Select
End With
bMI = False
Set pf = Nothing
pt.ManualUpdate = False
End If
Next pt
Next pfMain
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
とにかく私がやろうとしていることをすることはありますか?あなたの助けは大歓迎です!