不确定标题是否真的描述了我的问题,以及 Power Query 是否是解决此问题的正确方法。我的表包含具有单独 ID 的事件和属于特定 ID 的发票:
类型 | ID | 项目 | 地位 | 供应商 | 发票号码。 | 数量 |
---|---|---|---|---|---|---|
事件 | 12345 | 项目A | 打开 | |||
发票 | 12345 | 酒店 | 123 | 100,00 | ||
发票 | 12345 | 酒店 | 156 | 200,00 | ||
事件 | 45678 | 项目 B | 关闭 | |||
发票 | 45678 | 酒店 | 456 | 100,00 |
所需输出但“供应商 - 发票号 - 金额”也应为标题行或只是格式不同以便从视觉上将其与数据分开(不知道如何用表格显示这一点,这可能已经是我的问题的答案:D):
ID | 项目 | 地位 |
---|---|---|
12345 | 项目A | 打开 |
供应商 | 发票号码。 | 数量 |
酒店 | 123 | 100,00 |
酒店 | 156 | 200,00 |
ID | 项目 | 地位 |
---|---|---|
45678 | 项目 B | 关闭 |
供应商 | 发票号码。 | 数量 |
酒店 | 456 | 100,00 |
使用 Power Query 可以实现这一点吗?如果不行,我是否必须以不同的方式设置我的表格才能使其正常工作?
我对 Power Query 还很陌生,尝试了很多东西,但恐怕我缺少基础知识,甚至不知道从哪里开始。
非常感谢你的帮助!
答案1
您可以使用函数的自定义聚合轻松获取 Power Query 中显示的表格结果Table.Group
。
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"TYPE", type text}, {"ID", Int64.Type}, {"PROJECT", type text}, {"STATUS", type text}, {"Supplier", type text}, {"Invoice no.", Int64.Type}, {"Amount", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {
{"New Table", (t)=>
let
#"ID" = {t[ID]{0},"Supplier"} & List.RemoveFirstN(t[Supplier]),
#"PROJECT" = {t[PROJECT]{0}, "Invoice no."} & List.RemoveNulls(t[#"Invoice no."]),
#"STATUS" = {t[STATUS]{0}, "Amount"} & List.RemoveNulls(t[Amount]),
#"Table" = Table.FromColumns(
{#"ID",#"PROJECT",#"STATUS"},
{"ID","PROJECT","STATUS"})
in #"Table"
}}),
#"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"ID"}),
#"Expanded New Table" = Table.ExpandTableColumn(#"Removed Columns", "New Table", {"ID", "PROJECT", "STATUS"}, {"ID", "PROJECT", "STATUS"})
in
#"Expanded New Table"
要获得每个小节第二个标题行的差异格式,可以使用 Excel 中的条件格式。