Ajout de colonnes calculées à Excel Pivot sans détails

1

Existe-t-il un moyen d’ajouter un champ calculé qui ne s’appliquerait qu’au total de la colonne, sans ajouter de détails inutiles pour chaque élément de colonne?

Prenons l'exemple suivant.

Les données sont les suivantes:

Year    Product     Units   Price   Revenue
2013    Porduct A   100     1.5     150
2013    Porduct B   150     1.6     225
2013    Porduct C   200     1.7     300
2013    Porduct D   250     1.8     375
2013    Porduct E   300     1.9     450
2014    Porduct A   150     1.5     225
2014    Porduct B   200     1.6     300
2014    Porduct C   250     1.7     375
2014    Porduct D   300     1.8     450
2014    Porduct E   350     1.9     525

Le pivot résultant est le suivant:

Resulting pivot

Maintenant, disons, je souhaite ajouter un rabais de 10% pour le total de chaque produit. Toutefois, lorsque j'ajoute un champ calculé, je reçois séparément des détails sur les rabais inutiles:

Pivot with Calculated fields

Ce que je veux vraiment, c'est me débarrasser des détails d'année en année et laisser le calcul pour le total uniquement:

Desired output

Mais je voudrais y parvenir sans cacher les colonnes, mais simplement en ajoutant un champ, comme je le ferais normalement sans pivot. La raison derrière cela est que je voudrais effectuer beaucoup de calculs conséquents sans faire croître le pivot horizontalement (surtout lorsque je fais une analyse mois par mois, il étend le tableau résultant de 12 colonnes chaque fois qu'un champ calculé est ajoutée.

turezky
la source
Pourriez-vous ajouter un champ calculé personnalisé qui correspond à la formule qui additionne la réduction? Disons, faire le calcul dans ce champ et montrer le résultat? Ou avez-vous besoin des résultats des étapes disponibles, mais souhaitez-vous les masquer normalement?
Raystafarian
@ Raystafarian, j'ai besoin des résultats des étapes, mais uniquement pour les totaux. Le champ de remise est actuellement un champ calculé personnalisé. Bien que cela résolve le problème, cela ajoute également des colonnes inutiles.
turezky

Réponses:

1

Les tableaux croisés dynamiques standard prêts à l'emploi ne le permettent pas.

Dans un premier temps, je décrirai comment vous pourriez contourner ce problème en utilisant des tableaux croisés dynamiques classiques. Deuxièmement, je vous montrerai comment y parvenir à l'aide du complément PowerPivot.


Option 1: deux tableaux croisés dynamiques

Je m'y attaquerais simplement en installant deux tableaux croisés croisés l'un à côté de l'autre, l'un avec les années comme libellé de colonne et l'autre sans (ce second tableau est assis un rang plus bas pour s'aligner).

Vous devez vous assurer que les colonnes des étiquettes de lignes sont triées et filtrées de manière identique. Ensuite, vous pouvez simplement masquer la colonne des étiquettes sur la deuxième table.

enter image description here

(Dans cette capture d'écran, j'ai ajouté manuellement les étiquettes "Total" à la ligne 3)


Option 2: utilisation de PowerPivot

En utilisant PowerPivot et DAX, vous pouvez créer toutes ces colonnes en tant que mesures individuelles afin de pouvoir contrôler les filtres appliqués avec précision.

Tout d’abord, assurez-vous que PowerPivot est installé - Excel n’est livré avec, à part dans certaines éditions d’Excel 2013. Je ne vais pas suivre le processus d’installation, mais une recherche rapide devrait aider si vous êtes coincé.

Sélectionnez votre plage de données et cliquez sur Create Linked Table dans la barre d'outils PowerPivot.

enter image description here

La fenêtre verte PowerPivot devrait apparaître. Par défaut, votre table sera simplement nommée Tableau 1 - renommons Ventes de produits pour le rendre plus significatif.

enter image description here

Clique le PivotTable bouton au milieu du ruban vert et placez-le où bon vous semble. Nous devons maintenant créer des mesures. PowerPivot utilise un type de code appelé DAX (Data Analysis eXpressions) qui ressemble beaucoup aux formules Excel normales.

De retour dans Excel, commencez par ajouter Produit au Row Labels de votre tableau croisé dynamique. Maintenant, cliquez sur le New Measure bouton de l'onglet ruban PowerPivot.

Dans la fenêtre résultante, définissez Measure name (all PivotTables) à Unités Total et dans le Description zone de texte libre entrez:

=sum(ProductSales[Units])

enter image description here

Créez une autre mesure, appelée Unités 2013 . Entrez ce code:

=CALCULATE([Units Total],ProductSales[Year]=2013)

enter image description here

le CALCULATE() La fonction DAX vous permet d’appliquer (plusieurs) filtres à une expression agrégée - nous filtrons donc ici la Unités Total mesure que nous venons de créer, par année pertinente. Répéter pour Unités 2014 , puis refait la même chose pour Total des revenus , Chiffre d'affaires 2013 & amp; Chiffre d'affaires 2014 .

Vous pouvez maintenant commander et formater vos colonnes à votre guise - pour imiter vos captures d'écran ci-dessus, j'ai défini manuellement les paramètres 2013 & amp; 2014 colonnes à gris.

enter image description here

Andi Mohr
la source
Malheureusement, cacher ne résoudra pas le problème, car c’est la même solution que j’utilise actuellement (sans risque que certaines lignes / colonnes ne concordent. En revanche, PowerPivot n’est peut-être pas excessif après tout. Si cela peut résoudre Le problème avec PowerPivot, c'est qu'il devrait être installé sur les ordinateurs d'autres personnes si elles veulent manipuler la table.
turezky
Alors, comment faites-vous avec PowerPivot? Je viens d'ajouter une mesure, mais le résultat est identique.
turezky
J'ai élargi ma réponse pour montrer une solution PowerPivot.
Andi Mohr
Il s’agit donc essentiellement de créer manuellement une entrée pour chaque année. C'est la solution de raccourci pour le cas donné, mais cela peut devenir un problème lorsque les colonnes sont exprimées en mois ou lorsqu'elles sont une liste plus longue (noms, régions, etc.) à générer automatiquement.
turezky
Oui, les deux ont des faiblesses. Si vous avez plusieurs colonnes pour lesquelles vous devez faire cela, je suggérerais que la première option est la meilleure. Avec un peu de VBA, vous pouvez appliquer un tri commun sur les deux tables.
Andi Mohr