如何在Google Sheets中按条件合并(JOIN)记录?
Google Sheets 实现同县市政机构合并(类JOINIF功能)
你的表格数据(A列=县名,B列=市政机构)如下:
Alameda | Rowan City Council Alameda | Rowan Mayor Alameda | Chester School Board Jones | Fillips School Board Jones | Smith School Board Carol | Apple City Council Carol | Pear City Council
你之前尝试的公式无效,核心问题是JOIN函数不支持条件筛选逻辑,直接嵌套IF会把全表符合条件的结果一次性合并,而非针对每行的县名单独计算。
一、实现每行对应县的机构合并(匹配你的期望输出)
在C2单元格输入以下公式,自动覆盖所有行:
=BYROW(A2:A, LAMBDA(x, IF(x="", "", TEXTJOIN(", ", TRUE, FILTER(B2:B, A2:A=x)))))
说明:
BYROW(A2:A, LAMBDA(x, ...)):遍历A列每个单元格(变量x为当前行县名)FILTER(B2:B, A2:A=x):筛选出当前县名下的所有机构TEXTJOIN(", ", TRUE, ...):用逗号分隔合并结果,TRUE用于忽略空值
若你的Google Sheets版本不支持LAMBDA,改用数组公式(输入后按Ctrl+Shift+Enter):
=ARRAYFORMULA(IF(A2:A="", "", TEXTJOIN(", ", TRUE, IF(A2:A=TRANSPOSE(A2:A), B2:B, ""))))
二、实现最终目标:去重后每个县一行的合并列表
用QUERY函数一步完成分组、合并、去重,在空白单元格(如E1)输入:
=QUERY(A2:B, "SELECT A, GROUP_CONCAT(B, ', ') WHERE A != '' GROUP BY A", 0)
说明:
SELECT A, GROUP_CONCAT(B, ', '):提取县名并合并对应机构WHERE A != '':过滤空行GROUP BY A:按县名自动去重分组
也可以分两步操作:
- 获取唯一县名:在E2输入
=UNIQUE(A2:A) - 合并对应机构:在F2输入
=BYROW(E2:E, LAMBDA(x, TEXTJOIN(", ", TRUE, FILTER(B2:B, A2:A=x))))
内容的提问来源于stack exchange,提问作者AlwaysAlreadyOnline
相关产品推荐
相关产品推荐

