Tabela dinâmica do Excel - Como preservar o filtro e a classificação quando os dados são atualizados

0

Eu tenho uma tabela dinâmica (Excel 2010). Toda vez que eu atualizar os dados e fizer uma atualização, a classificação e os filtros da Tabela Dinâmica perderem-se repsectivamente, preciso explicitamente modificar o filtro (selecione todos e remova os que não são necessários).

Alguma solução para isso?

  • Como posso alterar o filtro por meio do VBA quando a tabela dinâmica é atualizada?
  • Como posso alterar a classificação por meio do VBA quando a tabela dinâmica é atualizada?
  • Como posso acionar uma atualização da tabela dinâmica quando os dados são alterados?

Obrigado antecipadamente Saudações Mark

    
por megloff 05.09.2014 / 16:50

1 resposta

0

Eu poderia conseguir o que queria. Simplesmente gravei primeiro uma Macro para ver os detalhes de quais objetos devem ser acessados. Depois terminei a coisa fazendo algumas otimizações. Por favor, consulte abaixo o extrato do código, talvez seja útil para outras pessoas.

Em relação à ordenação, encontrei em um fórum a dica de que você deveria adotar outra coluna "ordenação" na tabela de dados de origem e usá-la como coluna oculta na tabela dinâmica para definir a ordem de classificação usando esse campo. Este também não é perdido quando você altera os dados posteriormente.

Sub Macro1()
On Error GoTo Fehler
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets("Rating").PivotTables(1)
.PivotFields("OWASP 2010").ClearAllFilters
With .PivotFields("OWASP 2010")

    If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
    ' uncomment this sectin in case you liek to change the sorting via vba
    ' 1. sort first the stuff automatically A-Z
    '.AutoSort xlAscending, "OWASP 2010"
    ' 2. move empty values to the end
    'If .PivotItems(" ").Position <> .PivotItems.Count - 1 Then
    '    .PivotItems(" ").Position = .PivotItems.Count - 1
    'End If
 End With
.PivotFields("Categories").ClearAllFilters
With .PivotFields("Fortify Categories")
     If .PivotItems("0").Visible = True Then
        .PivotItems("0").Visible = False
     End If
     If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
End With
End With
Application.ScreenUpdating = True
Exit Sub
Fehler:
Application.ScreenUpdating = True
End Sub

considera Mark

    
por 08.09.2014 / 12:36