Excel 强大查询 - 合并 2 个表、计算值并创建数据透视表

问题描述 投票:0回答:1

我有任务要完成。它是关于业务单位(BU)和成本中心(CC)的“损益”-PNL。
我有2张桌子。
第一张表是主表,由业务单位 (BU) 和 2 个成本中心 (CC) 的年度数据组成。 BU 和两个 CC 有 2 个帐户,每个帐户有 5 个流,我们将它们命名为 flow1 到 flow5。每个流程都有年度 PNL 数据。

BU/CC 账户 流动 2023 年总计
事业部1 账户1 1)项目收入 120000
事业部1 账户1 2) 工程成本 -80000
事业部1 账户1 3)其他收入 0
事业部1 账户1 4)其他费用 0
事业部1 账户1 5)工作成本 -210000
事业部1 账户2 1)项目收入 600000
事业部1 账户2 2) 工程成本 -110000
事业部1 账户2 3)其他收入 0
事业部1 账户2 4)其他费用 0
事业部1 账户2 5)工作成本 -245000
成本中心1 账户1 1)项目收入 0
成本中心1 账户1 2) 工程成本 0
成本中心1 账户1 3)其他收入 0
成本中心1 账户1 4)其他费用 -120000
成本中心1 账户1 5)工作成本 -210000
成本中心1 账户2 1)项目收入 0
成本中心1 账户2 2) 工程成本 0
成本中心1 账户2 3)其他收入 0
成本中心1 账户2 4)其他费用 -120000
成本中心1 账户2 5)工作成本 -210000
成本中心2 账户1 1)项目收入 0
成本中心2 账户1 2) 工程成本 0
成本中心2 账户1 3)其他收入 0
成本中心2 账户1 4)其他费用 -120000
成本中心2 账户1 5)工作成本 -465000
成本中心2 账户2 1)项目收入 0
成本中心2 账户2 2) 工程成本 0
成本中心2 账户2 3)其他收入 0
成本中心2 账户2 4)其他费用 -120000
成本中心2 账户2 5)工作成本 -210000

第二张表是分配表,它显示了CC的PNL的哪一部分分配给BU定义为间接成本。 表由 3 列组成:BU/CC/分配键。

BU 抄送 分配键
事业部1 成本中心1 70
事业部1 成本中心2 30

我需要做什么?
显示完整损益表的数据透视表,其中仅 BU 在顶层显示为线条。 CC 的成本通过分配键分配给 BU(我们称之为间接成本)(例如 BU1 将从 CC1 获得 70% 的成本,从 CC2 获得 30% 的成本等)。成本分配的分配键应在分配表中定义 –(必须能够手动更改分配“键”)(说明涉及多个 BU 和 CC,但我给了您仅 1 BU 和 2 CC 的示例。

数据透视表结构:

我有点陷入这个例子,合并这两个表并计算有关间接成本的准确数据,并在 Excel 中的 Power 查询中的数据透视表中丢失。

我非常感谢您的想法/建议/帮助!

谢谢!

excel merge pivot pivot-table powerquery
1个回答
0
投票

在 powerquery 中,此代码将复制并分配美元 由您来进行报告

let Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"BU/CC", type text}, {"Account", type text}, {"Flows", type text}, {"Total 2023", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type", {"BU/CC"}, alloc, {"BU"}, "alloc", JoinKind.LeftOuter),
#"Expanded alloc" = Table.ExpandTableColumn(#"Merged Queries", "alloc", {"CC", "Allocation Key"}, {"CC", "Allocation Key"}),
#"Added Custom" = Table.AddColumn(#"Expanded alloc", "BU/CC2", each [CC] ?? [#"BU/CC"]),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Total 20232", each if [CC]=null then [Total 2023] else [Total 2023]*[Allocation Key]/100),
#"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([CC] <> null)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Total 20232"}),
#"Added Custom2" = Table.AddColumn(#"Removed Columns", "Total 20232", each [Total 2023]*[Allocation Key]/100),
Combined =  #"Added Custom1"  & #"Added Custom2",
#"Removed Columns1" = Table.RemoveColumns(Combined,{"BU/CC", "Total 2023"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns1",{{"BU/CC2", "BU/CC"}, {"Total 20232", "Total 2023"}})
in  #"Renamed Columns"

© www.soinside.com 2019 - 2024. All rights reserved.