Google Sheets拆分Google Form多名称条目,实现一行一名需求
解决Google Sheets多名称拆分单行转多行问题
针对Google Form提交的包含多个名称的表格数据,要实现每行对应一个名称且保留其他列关联数据的需求,可以使用以下Google Sheets公式:
=ARRAYFORMULA( IFERROR( VSTACK( {"时间","姓名","邮箱"}, QUERY( FLATTEN( BYROW(Sheet1!A2:C, LAMBDA(row, IF(INDEX(row,2)="",, MAP(SPLIT(INDEX(row,2),"、"), LAMBDA(name, JOIN("|", INDEX(row,1), name, INDEX(row,3)) ) ) ) ), "SELECT SPLIT(Col1,'|') WHERE Col1 IS NOT NULL", 0 ) ) ) )
公式说明
BYROW:遍历原始数据的每一行,对每行数据进行批量处理SPLIT(INDEX(row,2),"、"):将姓名列(第二列)按顿号拆分(如果你的表单用逗号/换行作为分隔符,替换成对应符号即可)MAP:把拆分后的每个姓名,和当前行的时间、邮箱拼接成用|分隔的字符串FLATTEN:将所有拼接后的字符串转为单列数据QUERY+SPLIT:把单列字符串拆回多列,同时过滤空值行VSTACK:添加自定义表头,和处理后的数据合并为完整表格IFERROR:处理空行或异常数据导致的公式错误
使用注意
- 替换公式中的
Sheet1!A2:C为你的实际数据范围 - 表头
{"时间","姓名","邮箱"}要和原始数据的表头完全对应 - 根据表单中多名称的输入分隔符,修改
SPLIT函数里的分隔符(比如表单用逗号分隔就改成",")
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

