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 )
公式拆解
内层QUERY:
- 从
表单数据工作表筛选出C列(提交日期)与$B$1指定日期匹配的记录 - 提取A(时间戳)、B(用户名)、K、M、N列数据
ORDER BY A DESC按时间戳降序排序,确保每个用户的最新提交排在该用户记录的最顶部- 最后一个参数
1表示包含表头
- 从
SORTN函数:
9^9:保留所有符合条件的行2:按第二列(用户名)分组去重,每组仅保留第一条记录(即最新提交)2, FALSE:指定按第二列分组,因内层已按时间戳排序,无需二次排序
外层QUERY:
- 对去重后的K(Col3)、M(Col4)、N(Col5)列数值求和
LABEL为求和结果添加列名,方便识别
自定义调整说明
- 若原始数据工作表名不是
表单数据,替换为实际名称即可 - 若用户名、提交日期或目标列的位置不同,修改内层QUERY中的列引用(比如把
B改成用户名所在列,C改成日期列) - 确保
$B$1的日期格式能被TEXT函数正确转换为yyyy-mm-dd格式,避免QUERY无法识别日期
内容的提问来源于stack exchange,提问作者user1837608
相关产品推荐
相关产品推荐

