如何在Google Sheets或Excel中根据选秀编号分类整理选秀数据
我来帮你搞定这个选秀数据格式转换的问题,不管用Google Sheets还是Excel都能实现,分步骤来操作就很清晰:
第一步:先把原始文本拆成「选秀编号+食物」的结构化两列
假设你的原始数据是放在单个单元格里(比如A1):Pick selection 1 salad 2 pizza 3 pizza 4 pizza 5 bread 6 carrots 7 pizza 8 apples 9 apples 10 pizza 11 salad
在Google Sheets里拆分:
- 先去掉开头的冗余文本:在B1单元格输入公式:
得到纯数据串:=SUBSTITUTE(A1, "Pick selection ", "")1 salad 2 pizza 3 pizza ... 11 salad - 提取选秀编号到C列(C1开始):
这个公式会按步长2提取拆分后的第1、3、5...个元素,也就是所有编号。=INDEX(SPLIT(B1, " "), SEQUENCE(ROUNDUP(COUNTA(SPLIT(B1, " "))/2), 1, 1, 2)) - 提取食物到D列(D1开始):
同理,提取第2、4、6...个元素,对应每个编号的食物。=INDEX(SPLIT(B1, " "), SEQUENCE(ROUNDUP(COUNTA(SPLIT(B1, " "))/2), 1, 2, 2))
在Excel里拆分(适用于365/2021版本):
- 同样先清理文本,B1输入:
=SUBSTITUTE(A1, "Pick selection ", "") - 提取编号到C列:
=INDEX(TEXTSPLIT(B1, " "), SEQUENCE(ROUNDUP(COUNTA(TEXTSPLIT(B1, " "))/2), 1, 1, 2)) - 提取食物到D列:
=INDEX(TEXTSPLIT(B1, " "), SEQUENCE(ROUNDUP(COUNTA(TEXTSPLIT(B1, " "))/2), 1, 2, 2))
如果是旧版Excel,直接用「数据」选项卡的「文本分列」功能,按空格拆分后,手动把编号和食物列整理到两列即可。
第二步:按食物分组,合并对应的选秀编号
现在我们已经有了结构化的两列数据,接下来按食物分类合并编号:
在Google Sheets里实现:
- 提取不重复的食物列表:在E1输入
Food,E2单元格输入:
下拉填充会自动列出所有不重复的食物。=UNIQUE(D:D) - 合并对应编号:在F2输入:
这个公式会筛选出当前食物对应的所有编号,并用空格连接起来,下拉填充所有食物行。=TEXTJOIN(" ", TRUE, FILTER(C:C, D:D=E2)) - (可选)合并成你要的最终格式:在G2输入
=E2&" "&F2,下拉后,再用=TEXTJOIN(" ", TRUE, G:G)就能得到完整的目标字符串:Food apples 8 9 carrots 6 bread 5 salad 1 11 pizza 2 3 4 7 10
在Excel里实现:
方法1:公式法(365/2021版本)
- 提取不重复食物:E2输入
=UNIQUE(D:D),下拉填充。 - 合并编号:F2输入:
下拉填充后,同样用=TEXTJOIN(" ", TRUE, FILTER(C:C, D:D=E2))=TEXTJOIN(" ", TRUE, G:G)(G列是=E2&" "&F2)得到最终结果。
方法2:Power Query法(兼容旧版Excel)
- 选中结构化的两列数据,点击「数据」选项卡→「从表格/区域」(旧版选「自表格」),导入Power Query编辑器。
- 在编辑器里,选中「食物」列,点击「转换」选项卡→「分组依据」,设置:
- 分组依据:食物
- 新列名:选秀编号
- 操作:自定义,公式填写
Text.Combine(Text.From([选秀编号]), " ")
- 关闭并上载数据,得到分组后的结果,再整理成你要的格式即可。
方法3:数据透视表法(365版本)
插入数据透视表,把「食物」拖到行区域,在值区域添加「选秀编号」,打开「值字段设置」→「自定义」,输入公式CONCATENATEX(VALUES(表[选秀编号]), 表[选秀编号], " "),透视表会直接显示每个食物对应的所有编号。
这样操作下来,就能完美把原始格式转换成你需要的按食物分类的格式啦!
内容的提问来源于stack exchange,提问作者Finger123




