Ciao,
se ho inteso il risultato desiderato provo a proporre una alternativa con l'utilizzo di Power Query.
let
Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
Formati = Table.TransformColumnTypes(Origine,{{"Tipo_Cliente", type text}, {"Cliente", type text}, {"Prodotto", type text}, {"Area", type text}, {"Valore", Int64.Type}, {"Peso", type number}}),
AggiuntaColonnaIndice = Table.AddIndexColumn(Formati, "Indice", 1, 1, Int64.Type),
SuddivisaColonnaClientePerRiga = Table.ExpandListColumn(Table.TransformColumns(AggiuntaColonnaIndice, {{"Cliente", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Cliente"),
RimossiDuplicatiIndice = Table.Distinct(SuddivisaColonnaClientePerRiga, {"Indice"}),
RaggruppateRighePerValore = Table.Group(RimossiDuplicatiIndice, {"Tipo_Cliente", "Cliente", "Prodotto", "Area"}, {{"Valore", each List.Sum([Valore]), type nullable number}}),
OrdinateRigheTipoClienteAreaValore = Table.Sort(RaggruppateRighePerValore,{{"Tipo_Cliente", Order.Ascending}, {"Area", Order.Ascending}, {"Valore", Order.Ascending}})
in
OrdinateRigheTipoClienteAreaValore
Naturalmente l'intervallo deve essere trasformato in una tabella (che nel mio caso è stata nominata Tabella1)