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

Google Sheets中如何筛选用户最新提交记录后跨列求和?

解决方案

可以通过嵌套 QUERY 和 SORTN 函数实现需求:先筛选指定日期的数据,保留每个用户的最新提交记录,再对目标列求和。假设原始表单数据存储在名为表单数据的工作表中(A列为提交时间戳、B列为用户名、C列为提交日期、K/M/N列为目标数值列),公式如下:

=QUERY(
  SORTN(
    QUERY('表单数据'!A:N, "SELECT A,B,K,M,N WHERE C = date '"&TEXT($B$1,"yyyy-mm-dd")&"' ORDER BY A DESC", 1),
    9^9, 2, 2, FALSE
  ),
  "SELECT SUM(Col3), SUM(Col4), SUM(Col5) LABEL SUM(Col3)'K列总和', SUM(Col4)'M列总和', SUM(Col5)'N列总和'",
  1
)

公式拆解

  1. 内层QUERY:

    • 从表单数据工作表筛选出C列(提交日期)与$B$1指定日期匹配的记录
    • 提取A(时间戳)、B(用户名)、K、M、N列数据
    • ORDER BY A DESC 按时间戳降序排序,确保每个用户的最新提交排在该用户记录的最顶部
    • 最后一个参数1表示包含表头
  2. SORTN函数:

    • 9^9:保留所有符合条件的行
    • 2:按第二列(用户名)分组去重,每组仅保留第一条记录(即最新提交)
    • 2, FALSE:指定按第二列分组,因内层已按时间戳排序,无需二次排序
  3. 外层QUERY:

    • 对去重后的K(Col3)、M(Col4)、N(Col5)列数值求和
    • LABEL 为求和结果添加列名,方便识别

自定义调整说明

  • 若原始数据工作表名不是表单数据,替换为实际名称即可
  • 若用户名、提交日期或目标列的位置不同,修改内层QUERY中的列引用(比如把B改成用户名所在列,C改成日期列)
  • 确保$B$1的日期格式能被TEXT函数正确转换为yyyy-mm-dd格式,避免QUERY无法识别日期

内容的提问来源于stack exchange,提问作者user1837608

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:31:02