如何在Google Sheets中将横向多月度数据转成纵向新标签页
解决方案
1. 生成重复的用户ID(tab2的A列)
在tab2的A2单元格输入以下公式,自动生成每个用户ID重复8行的序列:
=ARRAYFORMULA(INDEX(tab1!C2:C,ROUNDUP(SEQUENCE(COUNTA(tab1!C2:C)*8)/8,0)))
- 逻辑说明:
COUNTA(tab1!C2:C)统计tab1中有效用户ID的数量,乘以8得到总需生成的行数;SEQUENCE生成1到总行数的序列,除以8后向上取整,得到每个用户ID对应的原始行号,最后用INDEX提取对应用户ID。
2. 生成对应月份(tab2的B列)
若还未设置,可在tab2的B2单元格输入以下公式,自动匹配每个用户的8个月份:
=ARRAYFORMULA(TRANSPOSE(SPLIT(REPT(JOIN("|",tab1!D1:K1)&"|",COUNTA(tab1!C2:C)),"|")))
- 逻辑说明:
JOIN("|",tab1!D1:K1)把5-12月的表头用竖线拼接,REPT重复该拼接字符串(重复次数等于用户数量),再用SPLIT拆分后转置,得到每个用户对应的8个月份序列。
3. 生成对应月份的数值(tab2的C列)
在tab2的C2单元格输入以下公式,自动提取每个用户对应月份的数值:
=ARRAYFORMULA(FLATTEN(tab1!D2:K))
- 逻辑说明:
FLATTEN直接把tab1中D-K列的横向数值区域转换为纵向,与A、B列的用户、月份一一对应。
注意:若tab1中存在空的用户ID行,公式会自动忽略(
COUNTA仅统计非空单元格),无需额外处理。
内容的提问来源于stack exchange,提问作者djmystica
相关产品推荐
相关产品推荐

