Sop*_*son 1 excel vba unpivot excel-formula powerquery
我在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
Run Code Online (Sandbox Code Playgroud)
我需要将以下格式转换为下面提到的报告格式。
我想将这些产品转置到 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
Run Code Online (Sandbox Code Playgroud)
您可以使用 PowerQuery 来完成此操作。
选择源数据中的任意单元格。使用数据>获取和转换数据>从表/范围。
PowerQuery 编辑器将打开,如下所示:
通过单击列标题选择 Cust_Name 列。使用“变换”>“逆透视列”>“逆透视其他列”:
此时,可以选择过滤“值”列以排除 0。
现在使用“主页”>“关闭并加载”将数据放回工作簿中。
您现在可以创建一个数据透视表来获取小计:
以下是 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"
Run Code Online (Sandbox Code Playgroud)