如何用公式实现工作表列数据到另一工作表行的转换?
将水平格式数据转换为垂直格式的Google Sheets公式方案
针对你需要将Worksheet1的水平数据(员工行+日期列)转换为Worksheet2的垂直格式(每行对应员工+日期+工时)的需求,可以使用以下Google Sheets数组公式实现自动化:
核心公式(在Worksheet2的A2单元格输入)
=ARRAYFORMULA( LET( names, Worksheet1!A2:A, dates, Worksheet1!B1:1, hours, Worksheet1!B2:Z, paired_names, FLATTEN(IF(hours<>"", names, "")), paired_dates, FLATTEN(IF(hours<>"", dates, "")), paired_hours, FLATTEN(hours), FILTER({paired_names, paired_dates, paired_hours}, paired_hours<>"") ) )
公式说明
LET:定义变量简化公式结构,方便后续调整数据范围names:引用Worksheet1中存储员工姓名的列(A2:A,可根据实际范围修改)dates:引用Worksheet1中存储日期的首行(B1:1,自动适配所有日期列)hours:引用Worksheet1中所有工时数据区域(B2:Z,若数据超过Z列,可扩展为B2:1000)FLATTEN:将二维的工时数据、对应姓名和日期平铺为一维数组FILTER:过滤掉工时为空的行,只保留有效数据
动态范围优化(可选)
如果员工数量或日期列会动态增加,可将hours的范围改为动态引用,避免手动调整:
hours, Worksheet1!B2:INDEX(Worksheet1!Z:Z, COUNTA(Worksheet1!A:A))
该写法会自动根据A列的员工数量,匹配对应的工时数据行。
内容的提问来源于stack exchange,提问作者Chrizh
相关产品推荐
相关产品推荐

