Google Sheets:用Query转置表格,日期为列、姓名为行
用Query构建员工-日期交叉表,处理缺失条目
要把原始数据转成「员工为行、日期为列」的表格,同时补全缺失的条目(比如某员工某天没录入数据的情况),直接用Query的Pivot功能配合一点小技巧就能搞定,不用复杂嵌套:
核心公式(Google Sheets适用)
假设你的原始数据在A:C列:A=日期,B=员工姓名,C=录入内容,直接在空白单元格输入:
=ARRAYFORMULA(IFERROR(QUERY(A2:C, "SELECT B, MAX(C) GROUP BY B PIVOT A", 1), ""))
公式说明
QUERY(..., "SELECT B, MAX(C) GROUP BY B PIVOT A", 1):用PIVOT A把日期转成列,GROUP BY B按员工分组;MAX(C)是因为Query的Pivot必须配合聚合函数(每个员工+日期只会有一条有效数据,MAX不影响结果,仅满足语法要求)ARRAYFORMULA+IFERROR(..., ""):自动把Query返回的#N/A(缺失条目)换成空字符串,你也可以改成"未录入"这类自定义文本
更灵活的维度控制方案
要是你想手动指定员工或日期的排序/范围,可以分三步操作:
- 提取唯一员工(比如放在E列):
=SORT(UNIQUE(B2:B)) - 提取唯一日期(比如放在F1行):
=TRANSPOSE(SORT(UNIQUE(A2:A))) - 匹配数据:在E2单元格输入以下公式,然后下拉右拉填充:
=IFERROR(VLOOKUP(E$2&$F1, {$A$2:$A&$B$2:$B, $C$2:$C}, 2, 0), "")
这里通过E$2&$F1拼接员工+日期的组合,去原始数据中匹配对应内容,缺失条目自动显示为空。
关键提示
- 确保原始数据的日期格式统一,避免Query因格式混乱识别错列
- 若使用Excel,核心思路一致:可通过数据透视表+空值替换实现,或用XLOOKUP配合交叉维度完成匹配
内容的提问来源于stack exchange,提问作者Erens-Basement
相关产品推荐
相关产品推荐

