如何将Google Sheets多行单元格拆分为独立行并关联分类?
Google表格拆分换行文本并关联分类列解决方案
方案1:使用新版函数(Google Sheets 2023及以上版本支持)
在转换表的空白单元格(比如A2)输入以下公式,会自动溢出所有结果,同时过滤空单元格:
=LET( data, Reference!A:D, mainCat, INDEX(data,,1), cat, INDEX(data,,2), subCat, INDEX(data,,3), textCol, INDEX(data,,4), splitText, TEXTSPLIT(textCol, CHAR(10),,TRUE), rowNums, SEQUENCE(ROWS(data)), repeatedRows, TOCOL(IF(splitText<>"", rowNums, ),3), HSTACK( INDEX(mainCat, repeatedRows), INDEX(cat, repeatedRows), INDEX(subCat, repeatedRows), TOCOL(splitText,3) ) )
- 说明:
TEXTSPLIT按换行符拆分每个单元格的文本,TOCOL自动过滤空值,通过重复原行号关联对应的分类列,最后用HSTACK合并所有列。如果你的列顺序不同,调整INDEX(data,,N)中的N值即可(比如Text列是E列就改成INDEX(data,,5))。
方案2:兼容旧版本函数
如果你的Google Sheets不支持TEXTSPLIT或TOCOL,用以下公式:
=ARRAYFORMULA( IFERROR( VLOOKUP( SEQUENCE(ROWS(Reference!A:A)*LEN(Reference!D:D)-LEN(SUBSTITUTE(Reference!D:D,CHAR(10),""))), { FLATTEN(IF(SPLIT(Reference!D:D,CHAR(10))<>"", ROW(Reference!A:A),)), FLATTEN(SPLIT(Reference!D:D,CHAR(10))), FLATTEN(IF(SPLIT(Reference!D:D,CHAR(10))<>"", Reference!A:A,)), FLATTEN(IF(SPLIT(Reference!D:D,CHAR(10))<>"", Reference!B:B,)), FLATTEN(IF(SPLIT(Reference!D:D,CHAR(10))<>"", Reference!C:C,)) }, {3,4,5,2}, FALSE ) ) )
- 说明:用
SPLIT拆分文本后,FLATTEN将所有内容展开为单列,同时重复对应的分类数据,最后通过VLOOKUP匹配行号输出完整结果,IFERROR过滤空行。注意调整Reference!D:D为你的Text列引用,A:A/B:B/C:C对应你的三个分类列。
内容的提问来源于stack exchange,提问作者user765151
相关产品推荐
相关产品推荐

