假设我的主要数据表如下所示。我们的员工可以是项目负责人、团队成员之一,也可以不必参与项目。
项目名称 | 成本 | 项目负责人 | 团队成员1 | 团队成员2 | 团队成员3 |
---|---|---|---|---|---|
项目A | 1000 | 杰克 | 安德鲁 | 安妮 | 大卫 |
B项目 | 2000 | 大卫 | 保罗 | 百合 | 杰克 |
C 项目 | 3000 | 百合 | 威廉 | 杰克 | 安妮 |
D 项目 | 4000 | 杰克 | 大卫 | 安妮 | 百合 |
我可以使用“项目负责人”列作为主行标签,将此表转换为以下内容:
行标签 | 项目数量 | 成本总和 |
---|---|---|
杰克 | 2 | 5000 |
- 项目A | 1 | 1000 |
- 项目 D | 1 | 4000 |
大卫 | 1 | 2000 |
- 项目 B | 1 | 2000 |
百合 | 1 | 3000 |
- 项目 C | 1 | 3000 |
... | ... | ... |
我正在尝试创建一个数据透视表,在其中我可以看到每个员工的项目参与情况。因此,与上表相同,但这次员工可以存在于项目负责人列或团队成员列之一中,其余数据将被聚合。所以结果是:
行标签 | 项目数量 | 成本总和 |
---|---|---|
杰克 | 4 | 10.000 |
- 项目A | 1 | 1000 |
- 项目 B | 1 | 2000 |
- 项目 C | 1 | 3000 |
- 项目 D | 1 | 4000 |
大卫 | 3 | 7.000 |
- 项目A | 1 | 1000 |
- 项目 B | 1 | 2000 |
- 项目 D | 1 | 4000 |
... | ... | ... |
可以在数据透视表中这样做吗?或者我可以在创建数据透视表之前以某种方式合并行吗?
提前致谢。
最简单的方法是在创建数据透视表之前从当前布局转换表。这可以使用 VBA 或使用 Power Query 来完成。下面是一个可以运行的 Power Query 代码。
let
Source = Excel.Workbook(File.Contents("file_name"), null, true),
#"Navigation 1" = Source{[Item = "Sheet1 (2)", Kind = "Sheet"]}[Data],
#"Promoted headers" = Table.PromoteHeaders(#"Navigation 1", [PromoteAllScalars = true]),
#"Changed column type" = Table.TransformColumnTypes(#"Promoted headers", {{"Project Name", type text}, {"Cost", Int64.Type}, {"Project Lead", type text}, {"Team Member 1", type text}, {"Team Member 2", type text}, {"Team Member 3", type text}}),
#"Unpivoted other columns" = Table.UnpivotOtherColumns(#"Changed column type", {"Project Name", "Cost"}, "Role", "User Name"),
#"Added custom" = Table.AddColumn(#"Unpivoted other columns", "CustomRole", each Text.Trim(Text.Remove([Role],{"0".."9"}))),
#"Removed columns" = Table.RemoveColumns(#"Added custom", {"Role"}),
#"Inserted conditional column" = Table.AddColumn(#"Removed columns", "Custom", each if [CustomRole] = "Project Lead" then [Cost] else 0),
#"Removed columns 1" = Table.RemoveColumns(#"Inserted conditional column", {"Cost"}),
#"Renamed columns" = Table.RenameColumns(#"Removed columns 1", {{"CustomRole", "Role"}, {"Custom", "Cost"}})
in
#"Renamed columns"