Вы можете использовать Power Query (Получить и преобразовать данные):
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed type" = Table.TransformColumnTypes(Source,{{"product", type text}, {"customer", type text}, {"parameter", type text}, {"Jan", type number}, {"Feb", type number}, {"Mar", type number}}),
#"Filtered volume price" = Table.SelectRows(#"Changed type", each ([parameter] = "volume" or [parameter] = "price")),
#"Unpivoted months" = Table.UnpivotOtherColumns(#"Filtered volume price", {"product", "customer", "parameter"}, "month", "value"),
#"Pivoted parameter" = Table.Pivot(#"Unpivoted months", List.Distinct(#"Unpivoted months"[parameter]), "parameter", "value", List.Sum),
#"Added revenue" = Table.AddColumn(#"Pivoted parameter", "revenue", each [volume] * [price]),
#"Grouped products months" = Table.Group(#"Added revenue", {"product", "month"}, {{"total revenue", each List.Sum([revenue]), type number}, {"total volume", each List.Sum([volume]), type number}}),
#"Added average price" = Table.AddColumn(#"Grouped products months", "average price", each [total revenue] / [total volume]),
#"Removed totals" = Table.RemoveColumns(#"Added average price",{"total revenue", "total volume"}),
#"Pivoted months" = Table.Pivot(#"Removed totals", List.Distinct(#"Removed totals"[month]), "month", "average price", List.Sum),
#"Reordered months" = Table.ReorderColumns(#"Pivoted months",{"product", "Jan", "Feb", "Mar"})
in
#"Reordered months"
Более изощренный подход - пропустить последние две строки и загрузить запрос в модель данных - тогда вы можете использовать формулы CUBEVALUE
для получения средних цен:
=CUBEVALUE("ThisWorkbookDataModel",
CUBEMEMBER("ThisWorkbookDataModel","[Measures].[Sum of average price]"),
CUBEMEMBER("ThisWorkbookDataModel","[Table1].[product].&["&$A24&"]"),
CUBEMEMBER("ThisWorkbookDataModel","[Table1].[month].&["&D$1&"]"))