Notifications
Clear all

Filtro de tabela dinâmica

4 Posts
2 Usuários
0 Reactions
1,642 Visualizações
(@exit_light)
Posts: 27
Eminent Member
Topic starter
 

imaginando que tenho uma tabela dinâmica para os anos 2010 a 2013

eu quero selecionar dois anos, por exemplo, 2010 e 2011.

Tentei:

ActiveSheet.PivotTables("Tabela Dinâmica1").PivotFields("Ano").CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tabela Dinâmica1").PivotFields("Ano")
.PivotItems("(blank)").Visible = False
.PivotItems("2010").Visible = True
.PivotItems("2011").Visible = True
.PivotItems("2012").Visible = False
.PivotItems("2013").Visible = False
End With
ActiveSheet.PivotTables("Tabela Dinâmica1").PivotFields("Ano"). _
EnableMultiplePageItems = True

Depois, para ter todos os anos tente:

ActiveSheet.PivotTables("Tabela Dinâmica1").PivotFields("Ano").CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tabela Dinâmica1").PivotFields("Ano")
.PivotItems("(blank)").Visible = False
.PivotItems("2010").Visible = True
.PivotItems("2011").Visible = True
.PivotItems("2012").Visible = True
.PivotItems("2013").Visible = True
End With
ActiveSheet.PivotTables("Tabela Dinâmica1").PivotFields("Ano"). _
EnableMultiplePageItems = True

O meu problema é quando surgir 2014. Como não vou ter no código
.PivotItems("2014").Visible = True
ele não irá surgir.

Como faço?

Acho que conseguiria resolver caso soubesse o código para selecionar todos os dados do filtro e para apagar todos e escolher só os que quero.
Tentei isto mas não funciona

ActiveSheet.PivotTables("Tabela Dinâmica1").PivotFields("Ano").CurrentPage = _
"(All)"

ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Ano"). _
ClearAllFilters

 
Postado : 07/06/2013 4:30 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

exit_light,

Não seria melhor quando surgir 2014 você inerir a linha a que você se refere?

 
Postado : 07/06/2013 7:29 am
(@exit_light)
Posts: 27
Eminent Member
Topic starter
 

Encontrei a resposta a tudo o que queria nesse link

http://www.mrexcel.com/forum/excel-ques ... ons-2.html

Através desse código consigo seleccionar apenas os pontos que quero!

Dim LocnPivItm As PivotItem
For Each LocnPivItm In ActiveSheet.PivotTables("PivotTable1").PivotFields("Location").PivotItems
Select Case LocnPivItm
Case "A", "B"
Case Else
LocnPivItm.Visible = False
End Select
Next LocnPivItm

Mas agora tenho uma dúvida. Como faço para aplicar isso em todas as Pivot Tables que tenho numa sheet? Esse código aí apenas dá para a Pivot Table 1. Se eu tiver várias, tenho de repetir esse código várias vezes?

 
Postado : 07/06/2013 7:36 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Boa Tarde!

Coloque seu código dentro de um outro FOR EACH de modo a identifica o nome da Tablea Dinâmica, como no exemplo abaixo:

Sub teste()
    Dim TabDinamica As PivotTable
    For Each TabDinamica In ActiveSheet.PivotTables
        MsgBox TabDinamica.Name
    Next
End Sub
 
Postado : 07/06/2013 12:06 pm