如何在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列所有学生姓名,批量计算结果。
注意事项
- 确保响应表的时间戳列是日期/时间格式,否则
MAX或者ORDER BY没法正确识别最新提交 - 如果你的响应表已经直接记录了“及格/不及格”(而不是得分),那可以直接把公式里的得分判断部分替换成取对应列的值,不用再写
IF - 如果有重名的学生,建议在响应表里加个学号列,用姓名+学号作为唯一标识,避免匹配错误
内容的提问来源于stack exchange,提问作者Simon Dalgas
相关产品推荐
相关产品推荐

