Split & Transpose 挑战:Gform录入许可类表格转置实现咨询
Google Sheets多行展开实现方案
前提说明
原始数据结构共5列:A列许可证编号、B列人员姓名(多人员默认用逗号+空格分隔)、C列地点、D列有效期开始日期、E列有效期结束日期。最终要实现多人员拆分后每行对应1名人员,其他同许可证信息同步复用。
方案1:动态数组公式(推荐,自动同步原始数据更新)
假设原始数据存放在名为原始数据的工作表中,数据从第2行开始(第1行为表头),你可以在新工作表的A2单元格直接输入以下公式,会自动扩展生成所有符合要求的结果:
=ARRAYFORMULA( LET( // 筛选出有许可证编号的有效原始数据 raw, FILTER('原始数据'!A2:E, '原始数据'!A2:A <> ""), // 提取各列原始数据 permit, INDEX(raw,,1), names, INDEX(raw,,2), loc, INDEX(raw,,3), start_date, INDEX(raw,,4), end_date, INDEX(raw,,5), // 拆分同单元格的多人员姓名为横向多列 split_names, SPLIT(names, ", "), // 计算每行拆分出的人员数量 count_per_row, BYROW(split_names, LAMBDA(x, COUNTA(x))), max_count, MAX(count_per_row), // 把各列数据按人员数量重复后纵向展开 HSTACK( TOCOL(IF(SEQUENCE(1, max_count) <= count_per_row, permit, NA()), 2), TOCOL(split_names, 2), TOCOL(IF(SEQUENCE(1, max_count) <= count_per_row, loc, NA()), 2), TOCOL(IF(SEQUENCE(1, max_count) <= count_per_row, start_date, NA()), 2), TOCOL(IF(SEQUENCE(1, max_count) <= count_per_row, end_date, NA()), 2) ) ) )
自定义调整说明
- 若人员姓名的分隔符不是逗号+空格,修改
SPLIT(names, ", ")中的分隔符即可,比如纯逗号就改为SPLIT(names, ",") - 若原始工作表名称不是
原始数据,把公式中所有'原始数据'替换为你的实际工作表名称即可
方案2:手动操作(适配临时单次处理需求)
如果不需要和原始数据联动,可通过手动操作快速完成:
- 选中原始数据的人员姓名列,点击顶部菜单栏「数据」-「将文本拆分为列」,分隔符选择对应符号,把多人员拆分为横向多列
- 选中所有数据区域,使用「数据透视表」或Power Tools插件的「行转列展开」功能,把拆分后的多列姓名纵向展开,其他列关联复用即可
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

