Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Visto che non avevo sonno ho voluto provare a documentarmi un po'.
C'è da dire che se, come dico spesso, con Excel potresti preparare il caffe con Power Query anche il resto della colazione.
Incredibile quello che si può fare.
Questo è il file rielaborato: https://www.dropbox.com/scl/fi/u02y58y7lxq9fbym079c2/Tabella-pivot-totali-complessivi-MS.xlsx?rlkey=ub49uhlv3g0prg2diadq7xd36&dl=0
Ho modificato la query in modo che nel momento in cui venissero aggiunte delle nuove categorie (es. Felpe) le "etichette" di colonna si aggiornino automaticamente senza andare a ritoccare il codice M.
Ho voluto anche aggiungere una colonna che sommi le quantità totali. Per fare questo ho sostituito eventuali vuoti con gli zeri.
Ho spostato alla fine la colonna del prezzo con quello che sicuramente è un "work around" per non dover ritrovare il problema dei riferimenti a nomi fissi in quello che sarebbe un riordino di colonne. Ma sono sicuro che ci sarà un modo per ordinare una data colonna, di cui è noto il nome, spostandola alla fine di una serie di colonne il cui numero e nome può essere variabili.
Ma visto che è un po' tardi ci ho "girato attorno" :-)
Questo è il codice query che ne è scaturito:
let
Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
FiltraRigheArticoloColoreCategoriaVuote = Table.SelectRows(Origine, each ([Articolo] <> null) and ([Colore] <> null) and ([Categoria] <> null)),
CambiaTipo = Table.TransformColumnTypes(FiltraRigheArticoloColoreCategoriaVuote,{{"Articolo", type text}, {"Colore", type text}, {"Categoria", type text}, {"Qtà", Int64.Type}, {"Prezzo", type number}}),
OrdinaCategorie = Table.Sort(CambiaTipo,{{"Categoria", Order.Ascending}}),
Pivot = Table.Pivot(OrdinaCategorie, List.Distinct(OrdinaCategorie[Categoria]), "Categoria", "Qtà", List.Sum),
ListaPrezzoCategorie = List.Skip(Table.ColumnNames(Pivot),2),
ListaCategorie = List.Skip(Table.ColumnNames(Pivot),3),
SostituitoNull = Table.ReplaceValue(Pivot,null,0,Replacer.ReplaceValue,ListaCategorie),
RaggruppaColore = Table.Group(SostituitoNull, {"Colore"}, List.Transform(ListaPrezzoCategorie, (x)=> {x, each List.Sum(Table.Column(\_, x))})),
ColonnaIndice = Table.AddIndexColumn(RaggruppaColore, "Indice", 0, 1, Int64.Type),
TotaleQta = Table.AddColumn(ColonnaIndice, "Q.tà Totale", each List.Sum(Record.ToList(Table.SelectColumns(ColonnaIndice,ListaCategorie){[Indice]}))),
RimossaColonnaIndice = Table.RemoveColumns(TotaleQta,{"Indice"}),
DuplicatoPrezzo = Table.DuplicateColumn(RimossaColonnaIndice, "Prezzo", "Prezzo - Copia"),
RimossoPrezzo = Table.RemoveColumns(DuplicatoPrezzo,{"Prezzo"}),
PrezzoTotale = Table.RenameColumns(RimossoPrezzo,{{"Prezzo - Copia", "Prezzo totale"}})
in
PrezzoTotale
Giovanni prova se si adatta alla situazione reale e se restituisce sempre i risultati desiderati.
È stato un esperimento per me.
ciao