web-dev-qa-db-fra.com

Excel 2010 PowerPivot: Comment afficher des éléments sans données?

Dans les tableaux croisés dynamiques Excel standard, il existe une option pour les champs qui vous permet de forcer l’affichage de tous les éléments même s’il n’ya aucun résultat pour votre sélection actuelle. Voici l'option:

Pivot Table Field Settings Dialog box

Cependant, en utilisant le complément PowerPivot pour Excel 2010, cette option est estompée. Existe-t-il une solution de contournement pour que je puisse forcer l'affichage de tous les résultats?

Exemple de scénario - nombre de bananes vendues par mois. Si je ne vends pas de bananes en août, la table powerpivot ne montre aucune colonne pour août, elle saute simplement de juillet à septembre. J'ai besoin d'août pour apparaître, avec un nombre vierge de bananes, ou zéro.

Des idées? Peut-être qu'une expression DAX est requise?

EDIT: pour répondre à la question de harrymc, j'ai créé ce tableau croisé dynamique en sélectionnant PivotTable dans ce menu de la fenêtre PowerPivot.

PowerPivot PivotTable insert menu

12
Andi Mohr

En fait, c'est une meilleure solution. Merci à Alberto Ferrari pour celui-ci.

Vous devez créer une table des mois (c.-à-d. Une liste de noms de mois, janvier/février/mars, etc. - , une table liée fonctionnera parfaitement), et Créez une relation entre votre nouvelle table de mois et votre table de faits.

Puis écris une mesure comme celle-ci:

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

EDIT: lorsque vous ajoutez votre nouvelle colonne de mois dans votre tableau croisé dynamique, vous pouvez constater que le tri par défaut est frustrantly alphabetical; Apr, Aug, Dec, Feb ... Voici un excellent tutoriel vous montrant comment résoudre ce problème.

5
Andi Mohr

Une méthode de force brute consisterait à créer une mesure pour chaque mois. Tant que l'une des colonnes de mois contient des données, toutes les colonnes de mois apparaissent. Créer toutes ces mesures individuelles est cependant très fastidieux - pas idéal.

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

cela fonctionne pour moi:

= if (somme (calendrier) [date])> 0; if (isblank (somme (Sales_SalesOrderDetail [LineTotal])); 0; somme (Sales_SalesOrderDetail [LineTotal]))))

0
Jens

Une solution de contournement pourrait être possible d'utiliser une expression DAX (Data Analysis Expression) pour remplacer les blancs par des zéros.

DAX peut forcer un zéro au lieu d'un blanc lorsqu'il n'existe aucune donnée dans la table de faits mais que vous souhaitez que la ligne apparaisse dans le tableau croisé dynamique.

Pour une simple feuille de calcul avec Depts, Divisions et une table de faits appelée Numbers, et avec une seule colonne "D" contenant un nombre à additionner, écrivez le code DAX de la manière suivante:

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

Pour plus d'informations, voir:
Comment utiliser DAX dans le complément PowerPivot d'Excel
Expressions d'analyse de données (DAX) dans PowerPivot

Cette approche a été initialement suggérée dans le fil Afficher les éléments sans données sur les lignes .

0
harrymc