我在 excel 中有一些数据,格式如下:
Cust_Name Prod1 Prod2 Prod3 Prod4 Prod5
A 0 100 120 0 0
B 145 120 168 0 200
C 350 300 0 340 0
我需要将以下格式转换为下面提到的报告格式。我想通过 Cust_Name 将这些产品转置在一个列组中,其值 >0 否则它不应该成为最终输出报告的一部分。
我尝试了许多枢轴选项,但没有奏效。
所需输出:
Cust_Name Product Price
A Prod2 100
Prod3 120
Total A - 220
B Prod1 145
Prod2 120
Prod3 168
Prod5 200
Total B - 633
C Prod1 350
Prod2 300
Prod4 340
Total C - 890
最佳答案
您可以使用 PowerQuery 执行此操作。
选择源数据中的任何单元格。使用数据>获取和转换数据>从表/范围。
PowerQuery 编辑器将打开,如下所示:
通过单击列标题选择 Cust_Name 列。使用变换>反透视列>反透视其他列:
此时,可选择过滤值列以排除 0。
现在使用 Home>Close & Load 将数据放回您的工作簿。
您现在可以创建一个数据透视表来获取您的小计:
这是 PowerQuery 编辑器中“高级编辑器”对话框中的查询:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Cust_Name", type text}, {"Prod1", Int64.Type}, {"Prod2", Int64.Type}, {"Prod3", Int64.Type}, {"Prod4", Int64.Type}, {"Prod5", Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Cust_Name"}, "Attribute", "Value")
in
#"Unpivoted Other Columns"
关于excel - 如何按特定列值转置标题行值组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71000421/