如何使用ARRAYFORMULA按条件跨列合并单元格?
问题
我需要按条件合并依赖其他单元格的内容,用逗号分隔——当A2:A区域有重复值时,合并对应的B2:B区域所有单元格内容。而且单元格内容没法预先确定,不能在C或D列指定具体内容当条件。
原始表格:
| Column A | Column B |
|---|---|
| Jhon | One |
| Jhon | Two |
| Marcos | Zero |
| Monica | Two |
想要的结果:
| Column C | Column D |
|---|---|
| Jhon | One, Two |
| Marcos | Zero |
| Monica | Two |
我试着改了之前的参考公式:
原参考公式:
=ARRAYFORMULA(JOIN(", ",FILTER(B3:P3,NOT(B3:P3=""))))
改成了下面这个,但运行报错:
=ARRAYFORMULA((SE(A2:A=A2:A,B2:B & B2:B))
解决方案
方法1:分两步生成结果
- 先在C2单元格获取A列的唯一值:
=UNIQUE(A2:A)
- 再在D2单元格输入数组公式,自动合并对应B列的内容:
=ARRAYFORMULA(TEXTJOIN(", ", TRUE, FILTER(B$2:B, A$2:A=C2:C)))
这个公式会针对C列的每个唯一值,筛选A列里匹配的行,然后用逗号把对应的B列内容连起来。
方法2:一步生成完整两列结果
如果想在一个单元格直接输出所有结果(比如在C2输入),用这个QUERY公式:
=ARRAYFORMULA( QUERY( {A2:A, B2:B}, "select Col1, GROUP_CONCAT(Col2, ', ') where Col1 is not null group by Col1", 0 ) )
它用QUERY的分组合并功能,直接把A列相同值对应的B列内容拼起来,一次性生成你要的两列。
你之前公式出错的原因
SE是西语版的IF函数,在中文/英文环境的表格里得用IF;A2:A=A2:A这个条件永远成立,根本起不到分组筛选的作用;- 不仅缺了闭合括号,还没用到能合并多个单元格的函数(比如TEXTJOIN),只是把同一个单元格内容重复拼接,自然达不到合并不同行的效果。
内容的提问来源于stack exchange,提问作者Vic7152
相关产品推荐
相关产品推荐

