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

如何在Google Sheet的Data表中展示学生最新测验提交成绩?

解决Google Form Quiz响应数据同步:获取学生最新提交成绩的方法

我来帮你搞定这个问题!你现在遇到的核心问题是VLOOKUP默认只会返回第一个匹配到的记录,所以拿到的是学生的首次提交。要获取最新的提交成绩,我们可以用Google Sheets里的QUERY函数或者INDEX+MAX+MATCH的组合来实现,两种方法都很实用,我给你详细拆解下:

方法一:用QUERY函数(直观易读)

假设你的响应表结构是:

  • A列:提交时间戳(必须是日期/时间格式)
  • B列:学生姓名
  • C列:测验得分

那在Data表的B2单元格(对应A2的学生姓名),可以直接用下面的公式:

=IF(QUERY('响应表'!A:C, "SELECT C WHERE B = '"&A2&"' ORDER BY A DESC LIMIT 1", 0)>=80, "及格", "不及格")

公式解释:

  • QUERY('响应表'!A:C, ...):从响应表的A到C列中查询数据
  • "SELECT C WHERE B = '"&A2&"':筛选出姓名等于A2的记录,并且只提取得分列(C列)
  • ORDER BY A DESC:按提交时间戳倒序排列,最新的提交会排在最前面
  • LIMIT 1:只取第一条(也就是最新的那条记录的得分)
  • 最后用IF判断得分≥80就显示“及格”,否则显示“不及格”

如果你的响应表列位置不一样,比如姓名在D列、得分在E列,只要把公式里的B改成D,C改成E就行。

方法二:用INDEX+MAX+MATCH组合(传统函数方案)

如果你更习惯用基础函数组合,这个方案也很靠谱:

=IF(INDEX('响应表'!C:C, MATCH(MAX(FILTER('响应表'!A:A, '响应表'!B:B=A2)), '响应表'!A:A, 0))>=80, "及格", "不及格")

公式解释:

  • FILTER('响应表'!A:A, '响应表'!B:B=A2):先筛选出该学生所有提交的时间戳
  • MAX(...):从这些时间戳里找到最新的那个(时间值越大越新)
  • MATCH(..., '响应表'!A:A, 0):定位这个最新时间戳在响应表中的行号
  • INDEX('响应表'!C:C, ...):根据行号取出对应的得分
  • 同样用IF判断及格与否

批量应用技巧

如果想一次性算出所有学生的最新成绩,不用手动下拉公式,可以用BYROW函数(Google Sheets新版本支持):

=BYROW(A2:A, LAMBDA(name, IF(name="", "", IF(QUERY('响应表'!A:C, "SELECT C WHERE B = '"&name&"' ORDER BY A DESC LIMIT 1", 0)>=80, "及格", "不及格"))))

把这个公式放在B2单元格,它会自动遍历A列所有学生姓名,批量计算结果。

注意事项

  1. 确保响应表的时间戳列是日期/时间格式,否则MAX或者ORDER BY没法正确识别最新提交
  2. 如果你的响应表已经直接记录了“及格/不及格”(而不是得分),那可以直接把公式里的得分判断部分替换成取对应列的值,不用再写IF
  3. 如果有重名的学生,建议在响应表里加个学号列,用姓名+学号作为唯一标识,避免匹配错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:58:12