答案1
答案2
您可以使用 sumifs 来实现这一点。本质上,对于每个任务,对名称和日期与摘要行相匹配的每个数据单元求和。
首先,清除范围 C16:H20 但保留范围 A16:B20 中的名称和日期。
然后,在单元格 C16 中输入以下公式:
=SUMIFS(C$2:C$12,$A$2:$A$12,$A16,$B$2:$B$12,$B16)
向下填充至 C20,选择范围 C16:C20 并向右拖动以填充至 H16:H20。“$”不应更改。
答案3
答案4
您还可以使用Power Query
Windows Excel 2010+ 和 Office 365 中提供的获得所需的结果。
使用 Power Query
- 在数据表中选择一些单元格
Data => Get&Transform => from Table/Range
- 当 PQ 编辑器打开时:
Home => Advanced Editor
- 记下表格姓名在第 2 行
- 将下面的 M 代码粘贴到您所看到的位置
- 将第 2 行的表名改回最初生成的表名。
- 阅读评论并探索
Applied Steps
以了解算法
M 代码
请注意,我们做了一些额外的步骤,以便在结果中保留原始数据的顺序,因为 Pivoting 不一定会这样做
let
//change table name in next line to the actual name in your workbook
Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],
//get list of task names and "Names" so as to retain the original order
taskNames= List.RemoveFirstN(Table.ColumnNames(Source),2),
names = List.Distinct(Source[Name]),
//set proper data types for Name and Date columns
#"Changed Type" = Table.TransformColumnTypes(Source,{
{"Name", type text}, {"Date", type date}
}),
//make a column arrangement of the tasks, which will remove the blanks
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Name", "Date"}, "Attribute", "Value"),
//Then pivot back to list in original order without unnecessary blanks.
#"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", taskNames,
"Attribute", "Value", List.Sum),
//sort names to original order
sorted = Table.Sort(#"Pivoted Column",each List.PositionOf(names, [Name]))
in
sorted