如何在Google Sheets(Excel)中将多列分组数据合并为带标题的单列列表并添加分隔线
如何在Google Sheets(Excel)中将多列分组数据合并为带标题的单列列表并添加分隔线
嘿,这个需求我之前也处理过!不用手动挨个复制粘贴,用Google Sheets或Excel的动态数组公式就能快速搞定,下面分两种工具给你详细说明:
Google Sheets 实现方法
假设你的电影名在A列、对应人名在B列,找个空白单元格(比如D1)输入以下公式:
=FLATTEN(ARRAYFORMULA( LAMBDA(unique_movies, BYROW(unique_movies, LAMBDA(movie, VSTACK( movie, FILTER(B:B, A:A=movie), "=====" ) )) )(UNIQUE(A:A)) ))
按下回车就能自动生成你想要的格式啦!
公式简单拆解:
UNIQUE(A:A):先提取出所有不重复的电影名称,作为分组的核心依据;BYROW(...):逐个遍历每一部电影,用VSTACK把「电影名」「对应的所有人名」「分隔线=====」垂直堆叠成一组;FLATTEN:把所有分组好的内容展开成单列;- 最后手动删掉最后一行多余的
=====就行,这个小操作比修改公式更省事~
Excel 实现方法(适用于Excel 365/2021及以上版本)
同样假设数据在A:B列,在空白单元格输入这个公式:
=LET( unique_movies, UNIQUE(A:A), movie_groups, BYROW(unique_movies, LAMBDA(m, VSTACK(m, FILTER(B:B, A:A=m), "====="))), result, TOCOL(movie_groups, 1), INDEX(result, 1, 1:ROWS(result)-1) )
回车后直接得到完美格式,连最后一行多余的分隔线都自动去掉了!
公式简单拆解:
LET:用来定义变量,让公式逻辑更清晰易懂;unique_movies:提取唯一的电影名称列表;movie_groups:为每部电影生成「标题+人名+分隔线」的组合块;TOCOL:把所有组合块转换成单列数据;INDEX(...,1:ROWS(result)-1):自动剔除最后一行多余的分隔线。
如果你的Excel版本不支持动态数组,也可以先给A列排序,再手动插入电影标题和分隔线,不过显然用公式效率高多啦!
备注:内容来源于stack exchange,提问作者MilindaD
相关产品推荐
相关产品推荐

