Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione di dati
Ciao,
se ho capito qual è il risultato voluto, che dovrebbe essere la somma dei valori "pesati" per ciascun cliente del campo Valore, ti propongo l'utilizzo di Power Query che con il mio PC ottiene gli stessi valori presenti nel tuo file in un paio di secondi eseguendo l'aggiornamento della query.
Qui il file con una tabella con gli stessi tuoi dati e un tabella frutto della query:
Questo il codice M della query (che fa riferimento alla Tabella1):
let
Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
Formati = Table.TransformColumnTypes(Origine,{{"Cliente", type text}, {"Peso", type text}, {"Valore", type number}}),
SostituitoValori = Table.ReplaceValue(Formati,".",",",Replacer.ReplaceText,{"Peso"}),
SuddividiClienti = Table.ExpandListColumn(Table.TransformColumns(SostituitoValori, {{"Cliente", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Cliente"),
Indice = Table.AddIndexColumn(SuddividiClienti, "Indice", 0, 1, Int64.Type),
Mod = Table.AddColumn(Indice, "Mod", each Number.Mod([Indice],5)),
ListaPeso2 = Table.AddColumn(Mod, "Peso2", each List.Range( Text.Split([Peso],";") , [Mod] , 1)
),
EspansaListaPeso2 = Table.ExpandListColumn(ListaPeso2, "Peso2"),
FormatoPeso2 = Table.TransformColumnTypes(EspansaListaPeso2,{{"Peso2", type number}}),
ValoriPesati = Table.AddColumn(FormatoPeso2, "Valore Pesato", each [Valore]*[Peso2]),
RimosseColonne = Table.RemoveColumns(ValoriPesati,{"Peso", "Valore", "Indice", "Mod", "Peso2"}),
RaggruppatoClienti = Table.Group(RimosseColonne, {"Cliente"}, {{"Valore", each List.Sum([Valore Pesato]), type number}}),
OrdinatiClientiPerNome = Table.Sort(RaggruppatoClienti,{{"Cliente", Order.Ascending}})
in
OrdinatiClientiPerNome
Il tutto si basa sul fatto che, come da esempio, i nomitavi presenti siano sempre 5 con i relativi pesi.
Prova a vedere se ti può essere utile.
ciao