Google Sheets中类似sum()的字符串拼接聚合函数实现方法问询
Google Sheets 按Name分组合并Team字符串的实现方案
需求说明
需要将Google Sheets中的数据按Name分组,将对应Team列的字符串以逗号分隔合并,实现类似SQL中GROUP BY Name后聚合字符串的效果:
原数据:
| Name | Team |
|---|---|
| A | X |
| B | X |
| A | Y |
| B | Z |
| C | X |
| A | Z |
目标结果:
| Name | Team |
|---|---|
| A | X,Y,Z |
| B | X,Z |
| C | X |
方法1:UNIQUE + TEXTJOIN 组合(基础版)
- 获取唯一Name列表:在空白单元格(如D2)输入
=UNIQUE(A2:A7)
- 合并对应Team:在E2输入数组公式,自动匹配所有Name的合并结果
=ARRAYFORMULA(TEXTJOIN(",", TRUE, IF(A2:A7=D2:D, B2:B7, "")))
如果要一次性生成包含表头的完整结果,使用:
={{"Name", "Team"}, UNIQUE(A2:A7), ARRAYFORMULA(TEXTJOIN(",", TRUE, IF(A2:A7=UNIQUE(A2:A7), B2:B7, "")))}
方法2:LET + QUERY + BYROW 组合(简洁高效版)
适合新版Google Sheets(支持LET、LAMBDA函数),一次性生成排序后的完整结果:
=LET( rawData, A2:B7, uniqueNames, QUERY(rawData, "select Col1 where Col1 is not null group by Col1 order by Col1", 0), mergedTeams, BYROW(uniqueNames, LAMBDA(name, TEXTJOIN(",", TRUE, FILTER(INDEX(rawData,,2), INDEX(rawData,,1)=name)))), HSTACK(uniqueNames, mergedTeams) )
额外优化:去重合并的Team值
如果同一个Name对应重复的Team(如A多次出现X),需要去重后再合并,修改mergedTeams部分:
mergedTeams, BYROW(uniqueNames, LAMBDA(name, TEXTJOIN(",", TRUE, UNIQUE(FILTER(INDEX(rawData,,2), INDEX(rawData,,1)=name)))))
内容的提问来源于stack exchange,提问作者CoolMoon
相关产品推荐
相关产品推荐

