Excel: filtrar tabela dinâmica de outra folha / filtros duplicados em folhas

0

Estou trabalhando com o Excel para Mac 2011.

Eu tenho várias tabelas dinâmicas diferentes, cada uma organizando dados para gráficos em uma planilha de resumo. Todas as tabelas dinâmicas devem ser filtradas da mesma maneira.

Perguntas:

(1) Is there any way to move/duplicate/link these filters so that when one changes the others change as well? (VBA works for single selections now, but what about multiple selections?)

(2) Is there any way to create a single, universal filter on the main summary page?

EDIT: Basicamente, eu estou olhando para emular o SLICERS no Excel para Mac. Alguma idéia?

    
por Andrew 14.06.2011 / 19:46

1 resposta

1

Usando alguns exemplos que encontrei on-line, escrevi o seguinte VBA que faz o que eu preciso. Coloquei uma tabela dinâmica vazia na minha página de resumo e um botão vinculado a essa macro que atualiza todas as outras tabelas dinâmicas com os mesmos filtros.

AVISO LEGAL: Isso não funcionará para campos que tenham "(All)" Selected. Não era necessário que eu investigasse, mas é possível modificar o seguinte código para incluir o suporte "(All)".

Sub UpdateAllPivotTables()
Dim ws As Worksheet
Dim wsMain As Worksheet
Dim ptMain As PivotTable
Dim pt As PivotTable
Dim pfMain As PivotField
Dim piMain As PivotItem
Dim pi As PivotItem
Dim pf As PivotField
Dim hadError As Boolean


On Error Resume Next
Set wsMain = ActiveSheet
Set ptMain = ActiveSheet.PivotTables(1)

Application.EnableEvents = False


For Each ws In ThisWorkbook.Worksheets
        If (Not (ws.Name = wsMain.Name)) Then
            ws.Unprotect
            For Each pt In ws.PivotTables
                    pt.ManualUpdate = True
                    For Each pf In pt.PageFields
                            For Each pi In pf.PivotItems
                                If (Not (pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible)) Then
                                    pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible
                                End If
                            Next pi
                    Next pf
                    pt.ManualUpdate = False
            Next pt
            'ws.Protect
        End If
Next ws
Application.EnableEvents = True

End Sub
    
por 16.06.2011 / 18:18