Google Sheets:基于日期与复选框提取缺勤人员姓名的公式需求
Google Sheets 自动提取当日缺勤人员姓名解决方案
核心公式(简洁版)
直接用FILTER+INDEX+MATCH组合实现需求:
=FILTER(B6:B, INDEX(E6:AG, , MATCH(TODAY(), E2:AG2, 0))=TRUE)
公式拆解
TODAY():获取当前系统日期,需确保E2:AG2的日期格式与该函数返回格式一致(必须是日期格式,不能是文本)。MATCH(TODAY(), E2:AG2, 0):定位今日日期在E2:AG2中的列位置,返回该列在E2:AG2区域内的序号(比如E列是第1位、F列是第2位)。INDEX(E6:AG, , MATCH(...)):提取出对应日期的整列数据(从第6行开始,与姓名行对齐)。FILTER(B6:B, ...=TRUE):筛选出该列中复选框被勾选(值为TRUE)对应的B列姓名。
异常处理优化版
如果今日日期不在考勤日期范围内,或当日无缺勤人员,公式会返回#N/A,可以用IFERROR添加提示:
=IFERROR(FILTER(B6:B, INDEX(E6:AG, , MATCH(TODAY(), E2:AG2, 0))=TRUE), "今日无考勤数据或无缺勤人员")
注意事项
- 必须将E2:AG2单元格设置为日期格式:选中该区域,点击工具栏「格式」→「数字」→「日期」,避免因文本格式导致
MATCH匹配失败。 - 复选框默认值为勾选=TRUE、未勾选=FALSE,若你自定义了复选框的值(比如勾选显示「缺勤」),需将公式中的
=TRUE改为对应自定义值。
备选QUERY方案
如果偏好使用QUERY函数,可尝试以下公式:
=QUERY(B6:AG, "SELECT B WHERE "&SUBSTITUTE(ADDRESS(1, COLUMN(E2)+MATCH(TODAY(), E2:AG2, 0)-1, 4), "1", "")&"=TRUE", 0)
内容的提问来源于stack exchange,提问作者Snake10
相关产品推荐
相关产品推荐

