Excel 2010 PowerPivot: como mostro itens sem dados?


12

Nas tabelas dinâmicas padrão do Excel, há uma opção para campos que permitem forçar a exibição de todos os itens, mesmo que não haja resultados para sua seleção atual. Aqui está a opção:

Caixa de diálogo Configurações de campo de tabela dinâmica

No entanto, usando o suplemento PowerPivot para Excel 2010, esta opção está acinzentada. Existe uma solução alternativa para que eu possa forçar a exibição de todos os resultados?

Cenário de exemplo - número de bananas vendidas por mês. Se eu não vendo bananas em agosto, a tabela do powerpivot não mostra uma coluna para agosto, apenas pula de julho para setembro. Preciso que agosto apareça, com um número em branco de bananas ou zero.

Alguma ideia? Talvez uma expressão DAX seja necessária?

EDIT : para responder à pergunta de harrymc, criei esta Tabela Dinâmica selecionando Tabela Dinâmica neste menu na janela do PowerPivot.

Menu de inserção da tabela dinâmica do PowerPivot


Em um conjunto de dados do PowerPivot, você não pode adicionar itens sem dados; portanto, é natural que "Mostrar itens sem dados" fique acinzentado. Você está usando uma Tabela Dinâmica Achatada, conforme descrito aqui ?
harrymc

Obrigado pela resposta harrymc, não estou usando uma Tabela Dinâmica Achatada, usei uma Tabela Dinâmica padrão (veja a imagem acima).
Andi Mohr

No seu primeiro ponto, não tenho certeza se o entendi corretamente. Você diz que não pode adicionar itens sem dados, no entanto, meu conjunto de dados inclui as vendas de agosto para maçãs. Isso normalmente significa ativar a opção "Mostrar itens sem dados" mostra a coluna de agosto. Você está dizendo que as Tabelas Dinâmicas extraídas dos dados do PowerPivot se comportam de maneira diferente de qualquer outra fonte de dados?
Andi Mohr

Respostas:


5

Na verdade, esta é uma solução melhor. Obrigado a Alberto Ferrari por este.

Você precisa criar uma tabela Meses (ou seja, uma lista de nomes de meses, Jan / Fev / Mar etc. - uma tabela vinculada funcionará perfeitamente) e criar um relacionamento entre sua nova tabela Meses e sua tabela de fatos.

Em seguida, escreva uma medida como esta:

NeverBlankUnits:=IF( ISBLANK( SUM(FruitSales[Units]) )
                      , 0
                      , SUM(FruitSales[Units]) 
                   )

Edição : quando você adiciona sua nova coluna de meses à sua tabela dinâmica, você pode achar que a classificação padrão é frustrantemente alfabética; Abr, agosto, dezembro, fevereiro ... Aqui está um ótimo tutorial mostrando como contornar isso.


0

Uma solução alternativa pode ser possível usar uma Data Analysis Expression (DAX) para substituir espaços em branco por zeros.

O DAX pode forçar um zero em vez de um espaço em branco sempre que não houver dados na tabela de fatos, mas você desejar que a linha apareça na Tabela Dinâmica.

Para uma planilha simples com Depts, Divisions e uma tabela de fatos chamada Numbers, e com uma única coluna "D" contendo um número para somar, escreva o código DAX desta maneira:

=IF (
    COUNTROWS (Divisions) > 0; 
    IF (ISBLANK (SUM (Numbers[D])), 0, SUM (Numbers[D]))
)

Para obter mais informações, consulte:
Como usar o DAX nas expressões de análise de dados de suplemento do PowerPivot do Excel
(DAX) no PowerPivot

Essa abordagem foi originalmente sugerida no segmento Mostrar itens sem dados nas linhas .


Obrigado - basta olhar para esta abordagem para ver se consigo fazê-la funcionar. A primeira coisa que notei é um pequeno erro de digitação na fórmula - você tem ponto e vírgula em vez de vírgula. (Como faz o post original de AlbertoFerrari no link.)
Andi Mohr

Infelizmente, isso não parece funcionar. Eu adaptado a fórmula como se segue: Units_2:=IF (COUNTROWS('FruitSales') > 0,IF(ISBLANK (SUM (FruitSales[Units])), 0, SUM (FruitSales[Units]))). A tabela dinâmica mostra apenas as unidades vendidas em julho e setembro.
Andi Mohr

Se nenhuma outra solução puder ser encontrada, resta apenas achatar a tabela dinâmica em uma planilha local. O artigo ao qual vinculei antes pode ajudar.
harrymc

0

Um método de força bruta seria criar uma medida para cada mês. Desde que uma das colunas do mês tenha alguns dados, todas as colunas do mês serão exibidas. Criar todas essas medidas individuais é muito tedioso - não é o ideal.

=CALCULATE(
   SUM([Units])
   ,Filter('FruitSales',[Month Name]="August")
   )

0

isso funciona para mim:

= if (soma (calendário [Data])> 0; if (isblank (soma (Sales_SalesOrderDetail [LineTotal])); 0; sum (Sales_SalesOrderDetail [LineTotal])))


De onde calendar[Date]veio? Isso não está no meu cenário de exemplo, então como você adicionou isso e como essa tabela está vinculada no PowerPivot?
Andi Mohr 28/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.