如何在Google Sheets中无需脚本将分组数据单行拆分为多行?
可以用Google Sheets内置函数实现,无需脚本
以下两种方法都能一次性完成转换,支持处理最多15个ID列的情况:
方法1:适用于新版Google Sheets(支持TOCOL/LET函数)
假设原始数据的表头在第1行:group_id(A列)、id_1到id_15(B-O列),数据从第2行开始。
在空白区域的第2行(比如P2)输入以下公式:
=LET( groups, TOCOL(IF(B2:O<>"", A2:A, ""), 3), ids, TOCOL(B2:O, 3), HSTACK(groups, ids) )
TOCOL(..., 3)会自动忽略空值,只保留有ID的行LET用来简化变量定义,groups生成对应每个非空ID的重复group_id,ids提取所有非空IDHSTACK将两列合并成最终的二维表
方法2:兼容旧版Google Sheets
如果你的Sheets不支持TOCOL/LET,用FLATTEN+QUERY组合公式:
=QUERY( { FLATTEN(ARRAYFORMULA(IF(B2:O<>"", A2:A, ""))), FLATTEN(B2:O) }, "SELECT Col1, Col2 WHERE Col2 IS NOT NULL", 0 )
ARRAYFORMULA(IF(...))为每个非空ID匹配对应的group_id,空ID位置留空FLATTEN把多列数据转换成单列QUERY过滤掉ID为空的行,只保留有效数据
操作步骤
- 在工作表空白区域(比如新建一个工作表)输入表头
group_id和id - 在表头下方的单元格输入对应公式,按回车后自动生成所有拆分后的行
内容的提问来源于stack exchange,提问作者user2220139
相关产品推荐
相关产品推荐

