如何在Google Sheets中将每日更新的出勤表转为宽格式?
Google Sheets 长表转宽表(自动更新版)
针对你需要将日期-姓名的长格式数据转换为姓名-日期的宽格式(标记出勤状态)的需求,无需编写循环脚本,用Google Sheets内置函数就能实现自动更新的效果,步骤如下:
前提假设
原数据存放在Sheet1中:
- A列:日期(表头A1为「日期」)
- B列:姓名(表头B1为「姓名」)
转换后的结果将放在Sheet2中。
步骤1:生成姓名列表
在Sheet2的A2单元格输入公式:
=UNIQUE(FILTER(Sheet1!B2:B, Sheet1!B2:B<>""))
该公式会自动提取Sheet1中所有非空的唯一姓名,新增姓名时会自动同步更新。
步骤2:生成日期表头
在Sheet2的B1单元格输入公式:
=TRANSPOSE(UNIQUE(FILTER(Sheet1!A2:A, Sheet1!A2:A<>"")))
公式会提取Sheet1中所有非空的唯一日期,并转置为横向表头,新增日期时自动扩展。
步骤3:批量填充出勤状态
在Sheet2的B2单元格输入公式:
=ARRAYFORMULA(IF(COUNTIFS(Sheet1!$A$2:$A, B$1:1, Sheet1!$B$2:$B, $A2:A)>0, "Present", "absent"))
这个数组公式会自动遍历所有姓名和日期的组合:
COUNTIFS统计对应日期和姓名的匹配次数- 次数>0则标记为
Present,否则标记为absent - 公式会自动填充整个数据区域,无需手动下拉
效果说明
当Sheet1中新增日期或姓名数据时,Sheet2的姓名列表、日期表头以及出勤状态会自动更新,完全满足每日更新的需求。
内容的提问来源于stack exchange,提问作者Jered Karr
相关产品推荐
相关产品推荐

