Google Sheets从表单响应表提取并汇总用户签到签退数据
Google Sheets 签到签退数据汇总方案
前提假设
- 表单响应工作表命名为
表单响应,包含核心列:用户ID(存储用户唯一标识)、操作类型(标记「签到」/「签退」)、时间记录(对应签到/签退的具体时间) - 汇总工作表命名为
考勤汇总,列结构:用户ID、签到时间、签退时间
1. 提取单个用户的签到时间
在考勤汇总的签到时间列(如C2单元格)输入以下公式,匹配当前用户的签到记录:
=IFERROR(VLOOKUP(A2, '表单响应'!A:C, 3, FALSE), "未签到")
说明:A2为当前行的用户ID,表单响应'!A:C是包含用户ID、操作类型、时间记录的区域;如果用户无签到记录,返回「未签到」
如果需要取用户最新的签到记录(同一天多次签到的情况),改用XLOOKUP反向查找:
=IFERROR(XLOOKUP(A2, '表单响应'!A:A, '表单响应'!C:C, "未签到", 0, 2), "未签到")
2. 提取单个用户的签退时间
在考勤汇总的签退时间列(如D2单元格)输入公式,精准筛选用户的签退记录:
=IFERROR(INDEX(FILTER('表单响应'!C:C, '表单响应'!A:A=A2, '表单响应'!B:B="签退"), 1), "未签退")
说明:先用FILTER筛选出当前用户的所有签退记录,再用INDEX取第一条;若要最新签退记录,加入SORT排序:
=IFERROR(INDEX(SORT(FILTER('表单响应'!C:C, '表单响应'!A:A=A2, '表单响应'!B:B="签退"), 1, FALSE), 1), "未签退")
3. 整列自动填充(新手高效技巧)
如果想让整列自动计算,无需逐行复制公式,可在签到时间列的首行(如C1)使用ARRAYFORMULA:
=ARRAYFORMULA(IF(A2:A="", "", IFERROR(VLOOKUP(A2:A, '表单响应'!A:C, 3, FALSE), "未签到")))
同理,签退时间列也可以用数组公式批量处理:
=ARRAYFORMULA(IF(A2:A="", "", IFERROR(INDEX(SORT(FILTER('表单响应'!C:C, '表单响应'!A:A=A2:A, '表单响应'!B:B="签退"), 1, FALSE), 1), "未签退")))
内容的提问来源于stack exchange,提问作者Eugene Mendoza
相关产品推荐
相关产品推荐

