3 votes

Comment ajouter une ligne de totaux à Excel Power Query ?

J'ai produit un tableau comme celui ci-dessous en utilisant la fonction 'group' dans Excel Power Query.

score 1 score 2 score 3
A   6   25  50
B   8   30  20
C   15  15  30
D   20  0   10

Je veux ajouter une ligne de totaux (équivalente à "afficher les totaux pour la colonne" dans un tableau croisé dynamique normal), le résultat serait donc le suivant

score 1 score 2 score 3
A   6   25  50
B   8   30  20
C   15  15  30
D   20  0   10
Total 49    70      110

Quelqu'un sait-il s'il existe un moyen simple de le faire ? Merci, RY

7voto

Aleksei Zhigulin Points 1444

Une autre façon :

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    group = Table.Group(Source, {}, {{"letter", each "Total"},
                                     {"score 1", each List.Sum([score 1])},
                                     {"score 2", each List.Sum([score 2])}, 
                                     {"score 3", each List.Sum([score 3])}}),
    append = Table.Combine({Source, group})
in
    append

Ou :

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    cols = Table.ColumnNames(Source),
    group = Table.Group(Source, {}, List.Zip({cols, {each "Total"}&
                                    List.Transform(List.Skip(cols), 
                                    (x)=>each List.Sum(Table.Column(_,x)))})),
    append = Table.Combine({Source, group})
in
    append

Ou :

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    group = Table.Group(Source, {}, List.TransformMany(Table.ColumnNames(Source),
                                    (x)=>{each if x = "letter" then "Total" 
                                    else List.Sum(Table.Column(_,x))}, (x,y)=>{x,y})),
    append = Table.Combine({Source, group})
in
    append

0voto

will1329 Points 151

Je ne sais pas pourquoi vous feriez cela dans PowerQuery plutôt que dans un tableau croisé dynamique, mais la seule façon à laquelle je pense est de dupliquer le tableau, de découper les colonnes et de les redécouper en utilisant la somme comme agrégation. Ensuite, vous pouvez ajouter le tableau à votre requête originale.

Votre code devrait ressembler à quelque chose comme pour la table dans laquelle vous voulez créer les totaux.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
    #"Pivoted Column" = Table.Pivot(#"Unpivoted Columns", List.Distinct(#"Unpivoted Columns"[Attribute]), "Attribute", "Value", List.Sum)
in
    #"Pivoted Column"

Notez que vous devrez peut-être choisir d'agréger par nombre mais vous pouvez changer le code pour faire la somme (Sur la ligne #"Pivot Column" changez List.Count a List.Sum .

Vous obtiendrez une erreur pour la colonne A,B,C,D - vous pouvez la remplacer par Total si vous le souhaitez en utilisant la fonction Remplacer les erreurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X