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 SubPara utilizá-lo coloque no evento change da primeira Pivot da seguinte maneira.
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) FilterPivots End Sub
0 comentários:
Postar um comentário