Uma necessidade comum na utilização de Pivot Tables é que duas ou mais Pivots sejam filtradas com o mesmo critério, para isso desenvolvi o seguinte código:
Sub FilterPivots()
'Developed by Bruno Leite
'officevb.com
Dim pvt As PivotTable, pvt1 As PivotTable
Application.EnableCancelKey = xlDisabled
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim pi As PivotItem, pi1 As PivotItem
Dim pf As PivotField
'Set to the name of your PivotTable
Set pvt = FullYear.PivotTables("FY")
Set pvt1 = FullYear.PivotTables("FY1")
Application.EnableEvents = False
For Each pf In pvt.PivotFields
Select Case pf.Orientation
'Campos de linha
Case xlRowField
For Each pi In pf.PivotItems
pvt1.PivotFields(pf.Name).PivotItems(pi.Name).visible = pi.visible
Next pi
'Campos de Pagina
Case xlPageField
If pf.EnableMultiplePageItems Then
pvt1.PivotFields(pf.Name).ClearAllFilters
pvt1.PivotFields(pf.Name).EnableMultiplePageItems = pf.EnableMultiplePageItems
For Each pi1 In pf.PivotItems
pvt1.PivotFields(pf.Name).PivotItems(pi1.Name).visible = pi1.visible
Next pi1
Else
strFilter = pf.CurrentPage
pvt1.PivotFields(pf.Name).ClearAllFilters
pvt1.PivotFields(pf.Name).CurrentPage = strFilter
End If
End Select
Next pf
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Para utilizá-lo coloque no evento change da primeira Pivot da seguinte maneira.
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
FilterPivots
End Sub
16:14
Bruno Leite


0 comentários:
Postar um comentário