我的任务是从导出中获取数据并将其转换为报告。我最初的想法是用VBA来做,但我想我可以用Power Query来做,问题是我对此知之甚少。但这就是我想做的。
在上面的示例中,您可以看到数据到达我的方式 第 1 行当前有 11 个不同的类别,其中 4 个单元格合并为 1 个。 当我使用 Power Query 输入它时,标题看起来像这样
AS | 空 | 空 | 空 | BT | 空 | 空 | 空 | ||||
---|---|---|---|---|---|---|---|---|---|---|---|
地区 | 管理区 | 面积 | 日期 | 二手 - AS | 可用 - AS | % 预订 - AS | 状态 - AS | 二手 - BT | 可用 - BT | % 预订 - BT | 状态 - BT |
我希望最终的结果是什么
2024 年 3 月 1 日 - 星期五 | 2024 年 3 月 2 日 - 星期六 | ||||||||
---|---|---|---|---|---|---|---|---|---|
地点 | 类别 | 总计 | 二手 | 可用 | 可用% | 总计 | 二手 | 可用 | 可用% |
P1 - 节点 100-500 | AS | 97 | 0 | 97 | 100% | 1 | 0 | 1 | 100% |
P1 - 节点 100-500 | BT | 2 | 0 | 2 | 100% | 96 | 20 | 76 | 79% |
我相信为了完成我想要做的事情,我需要取消透视,然后重新透视数据。我遇到的问题是顶行中的合并单元格以及如何获取唯一列表、删除空值并移动到列
在使用 Pivot 和 unpivot 选项时,我尝试删除第一行 将新的第一行提升为标题,然后取消数据透视。
如果我能朝正确的方向踢一下,我将不胜感激,因为我不确定自己是否走在正确的轨道上。
看看这是否能给你带来任何想法
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Removed Top Rows" = Table.Skip(Source,1),
#"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Promoted Headers", {"Region", "Mgmt Area", "Area", "Date"}, "Attribute", "Value"),
#"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(" - ", QuoteStyle.Csv), {"Type", "Category"}),
#"Removed Columns" = Table.RemoveColumns(#"Split Column by Delimiter",{"Region", "Mgmt Area"}),
#"Grouped Rows" = Table.Group(#"Removed Columns", {"Area", "Date", "Category"}, {
{"total", each List.Sum(Table.SelectRows(_, each [Type] = "Avail" or [Type] = "Used")[Value])},
{"avail", each List.Sum(Table.SelectRows(_, each [Type] = "Avail")[Value])},
{"used", each List.Sum(Table.SelectRows(_, each [Type] = "Used")[Value])}
}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Available", each [avail]/[total],type number),
#"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Date", type date}}),
#"Unpivoted Other Columns1" = Table.UnpivotOtherColumns(#"Changed Type", {"Area", "Date", "Category"}, "Attribute", "Value"),
#"Added Custom1" = Table.AddColumn(#"Unpivoted Other Columns1", "Custom", each Text.From([Date]) & "-" &[Attribute]),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom1",{"Date", "Attribute"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns1", List.Distinct(#"Removed Columns1"[Custom]), "Custom", "Value", List.Sum)
in #"Pivoted Column"