父任务子任务工时统计:按成员汇总多子任务工时问题
按成员汇总父任务子任务工时的Google Sheets解决方案
需求回顾
现有任务列表包含Parent Key(子任务专属)、Key、Task Name、Task Type、Assigned Person、Time列,需生成不含子任务的统计列表:
- 无子任务的任务:直接取自身
Time值 - 有子任务的任务:按成员汇总其在该父任务下所有子任务的
Time总和,不计父任务自身耗时 - 同一成员负责同一父任务多个子任务时,累加对应工时
分步实现方案
1. 汇总有子任务的父任务+成员工时
先提取所有子任务对应的父任务与成员的唯一组合,再计算对应工时总和:
提取唯一组合:
=UNIQUE(FILTER({A:A, E:E}, A:A<>""))(A列为
Parent Key,E列为Assigned Person,筛选非空的子任务关联关系并去重)计算对应总工时:
对每个父任务Key和成员,用SUMIFS求和:=SUMIFS(F:F, A:A, 父任务Key单元格, E:E, 成员名称单元格)(F列为
Time,匹配父任务Key和成员,累加对应子任务工时)匹配父任务名称:
用VLOOKUP关联父任务的Task Name:=VLOOKUP(父任务Key单元格, B:C, 2, FALSE)(B列为父任务
Key,C列为Task Name)
2. 筛选无子任务的任务
提取Key未出现在Parent Key列中的任务(即无下属子任务):
=FILTER(B:F, ISNA(MATCH(B:B, A:A, 0)))
(B列为任务Key,A列为Parent Key,匹配不到的即为无子任务的任务,直接保留其Key、Task Name、Assigned Person、Time)
3. 合并结果(一键式QUERY方案)
用QUERY函数一次性完成分组汇总、筛选和合并,更高效:
=QUERY( { -- 分组汇总子任务工时 QUERY(A:F, "SELECT A, C, E, SUM(F) WHERE A <> '' GROUP BY A, C, E LABEL A '任务Key', C '任务名称', E '负责人', SUM(F) '总工时'"), -- 筛选无子任务的任务 QUERY(B:F, "SELECT B, C, E, F WHERE NOT B MATCHES '"&TEXTJOIN("|", TRUE, FILTER(A:A, A:A<>""))&"' LABEL B '任务Key', C '任务名称', E '负责人', F '总工时'") }, "SELECT * WHERE Col1 IS NOT NULL", 1 )
注意事项
- 确保
Parent Key与父任务Key的格式完全一致(如文本/数字格式),避免匹配失败 - 空白的
Time值会被自动忽略,无需额外处理 - 如需排序,可在最终QUERY语句末尾追加
ORDER BY Col1, Col3,按任务Key和负责人排序
内容的提问来源于stack exchange,提问作者JOY
相关产品推荐
相关产品推荐

