Pergunta

No Excel 2007, eu tenho um único conjunto de dados na forma de uma tabela do Excel a partir do qual eu quero fazer várias tabelas dinâmicas e gráficos pivô. Eu gostaria de ser capaz de sincronizar o campo 'filtro de relatório' em todas as tabelas dinâmicas e gráficos em simultâneo, de modo que através da filtragem, (por exemplo) o campo US_Region para 'Pacific Northwest' em uma das tabelas dinâmicas seriam aplicáveis ??que filtrar a todas as tabelas dinâmicas e gráficos na pasta de trabalho (que compartilham um único conjunto de dados). Existe uma maneira de fazer isso sem VBA e, se não houver, o que seria o / menos maneira klugy mais flexível para fazê-lo em VBA?

Graças

Foi útil?

Solução

Criar um procedimento para alterar todos os campos de página. Este percorre todas as planilhas na pasta de trabalho e se a planilha tem uma tabela dinâmica, muda o campo de página para coincidir com o campo de página na tabela dinâmica passados ??para o sub.

Sub ChangePage(pt As PivotTable)

    Dim strPageValue As String
    Dim wks As Worksheet
    Dim ptUpdate As PivotTable

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    strPageValue = pt.PivotFields("Area").CurrentPage

    For Each wks In ThisWorkbook.Worksheets

        On Error Resume Next
        Set ptUpdate = wks.PivotTables(1)

        If Err.Number = 0 Then
            On Error GoTo 0
            wks.PivotTables(1).PivotFields("Area").ClearAllFilters
            wks.PivotTables(1).PivotFields("Area").CurrentPage = strPageValue
        End If
        Err.Clear

    Next wks

    Application.ScreenUpdating = True
    Application.EnableEvents = True

End Sub

Em seguida, fazer uma chamada para esse procedimento no próprio código planilha e passar a tabela dinâmica que você mudou:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    Call ChangePage(Target)

End Sub

Mudar o nome do campo pivot da "Área" para o campo de página que você precisa, por exemplo "US_Region".

Esta pode não ser adequado se as pessoas são freqüentemente mudando a estrutura de suas tabelas dinâmicas de outras formas, como ele irá acionar cada vez que a tabela dinâmica for alterado, inclusive quando ele é atualizado. Ele também lhe dará um erro se os usuários remover o campo de página especificado.

Se as tabelas dinâmicas são embora estático, isso pode fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top