Google Sheets按A列分组合并B列为逗号分隔列表:用Query还是Arrayformula?
Google Sheets 按产品分组合并属性值方案
原始数据
| 产品 | 属性 |
|---|---|
| Product A | Cyan |
| Product B | Cyan |
| Product C | Cyan |
| Product A | Magenta |
| Product C | Magenta |
| Product B | Yellow |
| Product C | Yellow |
| Product A | Black |
| Product B | Black |
预期效果
| 产品 | 属性 |
|---|---|
| Product A | Cyan,Magenta,Black |
| Product B | Cyan,Yellow,Black |
| Product C | Cyan,Magenta,Yellow,Black |
实现方式
单独用QUERY函数无法直接完成字符串合并(它的聚合函数仅支持数值类运算),单独用ArrayFormula需要配合遍历逻辑,最优方案是结合ArrayFormula与BYROW/LAMBDA,或搭配QUERY做最终格式化,以下是两种可行公式:
方案1:ArrayFormula + BYROW + LAMBDA(推荐)
假设原始数据在A1:B10(含表头),在空白单元格输入:
=ArrayFormula({ "产品", "属性"; UNIQUE(FILTER(A2:A, A2:A<>"")), BYROW(UNIQUE(FILTER(A2:A, A2:A<>"")), LAMBDA(product, TEXTJOIN(",", TRUE, FILTER(B2:B, A2:A=product))) ) })
- 逻辑说明:
UNIQUE(FILTER(A2:A, A2:A<>"")):提取非空的唯一产品列表BYROW+LAMBDA:遍历每个唯一产品,用FILTER筛选对应属性,再通过TEXTJOIN合并为逗号分隔字符串- 外层
ArrayFormula实现批量计算,无需下拉填充
方案2:QUERY + ArrayFormula
如果需要用QUERY统一处理表头和过滤,可使用:
=QUERY( {UNIQUE(A2:A10), ARRAYFORMULA(TEXTJOIN(",", TRUE, FILTER(B2:B10, A2:A10=UNIQUE(A2:A10)))))}, "SELECT Col1, Col2 WHERE Col1 IS NOT NULL LABEL Col1 '产品', Col2 '属性'" )
- 逻辑说明:
- 先构建包含唯一产品和对应合并属性的二维数组
- 用
QUERY筛选非空行并设置表头
内容的提问来源于stack exchange,提问作者Aleister Tanek Javas Mraz
相关产品推荐
相关产品推荐

