Excel 2007 Filtragem em várias tabelas dinâmicas
-
07-07-2019 - |
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
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.