Página 1 de 1

DESMARCAR VAZIO EM TABELA DINÂMICA AO LIMPAR FILTRO DE SEGMENTAÇÃO DE DADOS

Enviado: 04 Mar 2023 às 19:37
por alexlounofre
Saudações, caros usuários,

Preciso de uma valiosa ajuda:
Tenho uma tabela dinâmica derivada de um intervalo de dados que inevitavelmente tem algumas linhas em branco, e consequentemente a referida tabela dinâmica apresenta o item (vazio) em rótulos de linhas. Até aí, o simples filtrar, desmarcando o item (vazio) resolveria a questão, mas o problema é que, dessa tabela dinâmica, gerei um gráfico para análise, bem como uma segmentação de dados para dinamizar a consulta, e daí, toda vez que limpo o filtro da segmentação, o item (vazio) acaba reaparecendo, não só na tabela como também no gráfico.
Alguém poderia sugerir um código para que, toda vez que a segmentação for "limpa", automaticamente o item (vazio) seja novamente desmarcado na tabela dinâmica?
Em anexo vai a planilha de exemplo para melhor esclarecimento da questão.

Desde já fico muito grato pela ajuda.

Re: DESMARCAR VAZIO EM TABELA DINÂMICA AO LIMPAR FILTRO DE SEGMENTAÇÃO DE DADOS

Enviado: 16 Mar 2023 às 21:40
por alexlounofre
Bem, estou postando a resposta obtida em outro fórum, por meio de um colaborador prestativo que me ajudou muito com a solução. O código consiste em uma private sub, conforme abaixo:


Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)

'Desmarca item (vazio) na tabela dinâmica ao limpar segmentação
On Error Resume Next

Static n As Long

n = n + 1

If n > 1 Then Exit Sub


    ActiveSheet.PivotTables("nome da tabela dinâmica").PivotFields("nome do campo").PivotFilters _
        .Add2 Type:=xlCaptionDoesNotEqual, Value1:="(vazio)"

'A linha abaixo é uma outra alternativa que também funciona:
'Target.PivotFields("nome do campo").PivotFilters _
        .Add2 Type:=xlCaptionDoesNotEqual, Value1:="(vazio)"

n = 0

End Sub


Espero que possa ajudar mais pessoas que porventura tenham a mesma dúvida.