You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中对FILTER函数的结果进行求和/聚合

如何在Google Sheets中对FILTER函数的结果进行求和/聚合

嘿,我完全懂你的困扰——参考了Excel的解决方案却在Google Sheets里跑不通对吧?别着急,咱们针对Google Sheets的特性来搞定这个工时汇总的需求。

先明确下你的场景:你有一份工时表数据,想要通过指定日期范围,汇总出每个员工在各个项目上的耗时,生成类似交叉透视表的视图,而且你已经搞定了顶部的项目列表(用了TRANSPOSE(SORT(UNIQUE(FILTER(...))))的组合)。

下面给你几个实用的解决方案,按需选择就行:

方案1:一步到位用QUERY+PIVOT(最省心)

Google Sheets的QUERY函数自带透视功能,能直接生成你要的交叉汇总表,不用单独做表头再逐个填充数据。假设你的ARCHIVE工作表里:

  • B列是工时开始日期,C列是结束日期
  • D列是员工姓名,E列是项目名称
  • F列是对应的工时数

试试这个公式:

=QUERY(ARCHIVE!A:F, "SELECT D, SUM(F) WHERE B >= date '"&TEXT(B28, "yyyy-mm-dd")&"' AND C <= date '"&TEXT(B29, "yyyy-mm-dd")&"' GROUP BY D PIVOT E", 1)

我给你拆解下逻辑:

  • ARCHIVE!A:F:指定要查询的完整数据范围
  • SELECT D, SUM(F):选取员工列,并对工时列做求和计算
  • WHERE ...:过滤出B28(起始日期)到B29(结束日期)范围内的数据,用TEXT把单元格日期转成QUERY能识别的格式
  • GROUP BY D:按员工分组汇总
  • PIVOT E:把项目列转成横向表头,自动匹配每个员工的对应项目工时
  • 最后的1:表示数据源有表头行,让QUERY能正确识别列名

方案2:配合现有表头用SUMIFS(适配你已做的设置)

如果你已经用现有公式生成了项目表头和员工列表,可以用SUMIFS来填充每个员工-项目的工时:

  1. 先在A列生成员工列表(和你的项目表头逻辑一致):
=SORT(UNIQUE(FILTER(ARCHIVE!D:D, ARCHIVE!B:B >= B28, ARCHIVE!C:C <= B29)))
  1. 在第一个员工第一个项目的单元格(比如B31)输入公式:
=SUMIFS(ARCHIVE!F:F, ARCHIVE!D:D, A31, ARCHIVE!E:E, B30, ARCHIVE!B:B, ">="&B28, ARCHIVE!C:C, "<="&B29)

然后把这个公式右拉、下拉,就能自动填充所有汇总结果。

方案3:动态数组BYROW/BYCOL(自动遍历填充)

如果你想用Google Sheets的现代动态数组函数,可以一次性生成所有结果,不用手动拉公式:

=BYROW(A31:A, LAMBDA(staff, BYCOL(B30:Z, LAMBDA(project, SUMIFS(ARCHIVE!F:F, ARCHIVE!D:D, staff, ARCHIVE!E:E, project, ARCHIVE!B:B, ">="&B28, ARCHIVE!C:C, "<="&B29)))))

这个公式会自动遍历员工列和项目列,批量计算每个组合的工时总和。

注意事项

  • 如果你实际的列位置和我假设的不一样,记得把公式里的列(D、E、F等)改成你对应的列
  • 确保日期格式是Google Sheets能识别的标准格式,避免过滤出错
  • 空白的项目或员工会被FILTER+UNIQUE自动过滤,不会显示无效的空行空列

备注:内容来源于stack exchange,提问作者jkjenner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:44:31