Usuário com melhor resposta
Filtro em Tabela Dinâmica

Pergunta
-
Numa tabela dinâmica, quero deixar apenas os itens com erro (#N/D). Entretanto podem haver novos itens "TIPO" a serem classificados como FALSO, vejam o exemplo abaixo.
ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO").CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO")
.PivotItems("Administrador").Visible = False
.PivotItems("Avançado").Visible = False
.PivotItems("Não Aplicado").Visible = False
.PivotItems("Normal").Visible = False
.PivotItems("#N/D"").Visible = true
End WithParece simples, mas na primeira linha se faço um "ClearAllFilters" dá erro! Então tenho que listar todos os demais como FALSE e o #N/D como true... só que devem aparecer novos TIPOs que neste momento não estão listados. Como proceder ?
Respostas
-
pode colocar esse código no fim do seu....
Dim tb As PivotTable Dim x As Integer Set tb = ActiveSheet.PivotTables("Tabela dinâmica1") For x = 1 To tb.PivotFields("TIPO").PivotItems.Count If tb.PivotFields("TIPO").PivotItems(x) = "#N/D" Then tb.PivotFields("TIPO").PivotItems(x).Visible = True Else tb.PivotFields("TIPO").PivotItems(x).Visible = False End If Next x
e apaga esse trecho do seu....
With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO") .PivotItems("Administrador").Visible = False .PivotItems("Avançado").Visible = False .PivotItems("Não Aplicado").Visible = False .PivotItems("Normal").Visible = False End With
- Editado 'Natan Silva quinta-feira, 10 de julho de 2014 19:21
- Marcado como Resposta MLRamos sexta-feira, 11 de julho de 2014 11:02
Todas as Respostas
-
MLRamos,
faz usando um laço....
Dim tb As PivotTable Dim x As Integer Set tb = Sheets("Plan1").PivotTables("tbTestes") For x = 1 To tb.PivotFields("TIPO").PivotItems.Count If tb.PivotFields("TIPO").PivotItems(x) = "#ND" Then tb.PivotFields("TIPO").PivotItems(x).Visible = True Else tb.PivotFields("TIPO").PivotItems(x).Visible = False End If Next x
Se ajudei, não esqueça de Marcar Como Resposta!
-
Nossa ! Faz sentido e tentei adaptar, mas não funfou !
Meu código é fruto do "gravar macro", com alterações, não sei porque não dá!
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
NEW_SHIT & "!R1C1:R" & ulin & "C4", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:=ActiveSheet.Name & "!R3C1", TableName:="Tabela dinâmica1", _
DefaultVersion:=xlPivotTableVersion14
'layout classico e remoção do total geral
With ActiveSheet.PivotTables("Tabela dinâmica1")
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With
ActiveSheet.PivotTables("Tabela dinâmica1").ColumnGrand = False
'campo1
With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("SOFTWARE")
.Orientation = xlRowField
.Position = 1
End With
'campo2, filtro por TIPO
With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO").CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO")
.PivotItems("Administrador").Visible = False
.PivotItems("Avançado").Visible = False
.PivotItems("Não Aplicado").Visible = False
.PivotItems("Normal").Visible = False
End With
ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO").EnableMultiplePageItems = TrueDesde já agradeço sua paciência.
-
pode colocar esse código no fim do seu....
Dim tb As PivotTable Dim x As Integer Set tb = ActiveSheet.PivotTables("Tabela dinâmica1") For x = 1 To tb.PivotFields("TIPO").PivotItems.Count If tb.PivotFields("TIPO").PivotItems(x) = "#N/D" Then tb.PivotFields("TIPO").PivotItems(x).Visible = True Else tb.PivotFields("TIPO").PivotItems(x).Visible = False End If Next x
e apaga esse trecho do seu....
With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("TIPO") .PivotItems("Administrador").Visible = False .PivotItems("Avançado").Visible = False .PivotItems("Não Aplicado").Visible = False .PivotItems("Normal").Visible = False End With
- Editado 'Natan Silva quinta-feira, 10 de julho de 2014 19:21
- Marcado como Resposta MLRamos sexta-feira, 11 de julho de 2014 11:02
-
Funcionou !!
Único detalhe é que apesar de mostrar #N/D, internamente ele é #N/A (não sabia disso!).
Descobri por acaso ao executar. Inicialmente apresentava erro e verifiquei que todos estavam indo para o FALSE, inclusive o #N/D...
Muito obrigado!