如何将Google Sheet按相同字段合并行并拼接唯一数据到同一单元格
Google Sheet 班级参与记录汇总方案
问题1:提取唯一Class ID的实现优化
你当前使用的=UNIQUE(Sheet1!I2:I)已经是Google Sheet原生最简洁的唯一值提取方案,如果需要额外兼容空值过滤、结果排序的场景,可以使用优化版本:
=SORT(UNIQUE(FILTER(Sheet1!I2:I, Sheet1!I2:I<>"")))
各参数作用:
FILTER过滤掉Sheet1 I列的空行,避免返回无效的空唯一值SORT对提取到的Class ID做升序排序,方便后续查找
如果不需要排序和空值处理,原有公式完全可用,无性能缺陷。
问题2:按Class ID拼接对应Employee ID
VLOOKUP本身设计仅返回首个匹配结果,无法直接输出所有匹配值数组,推荐两种适配不同场景的实现方案:
方案1:逐行匹配(可读性高,适配中小数据量)
不需要手动下拉,单公式自动溢出所有结果,直接在Sheet2的C2单元格输入:
=BYROW(B2:B, LAMBDA(cid, IF(cid="",, TEXTJOIN(" ", TRUE, FILTER(Sheet1!B2:B, Sheet1!I2:I=cid)))))
逻辑说明:
BYROW遍历B列的每一个Class ID,逐行触发计算FILTER筛选Sheet1中所有Class ID匹配的Employee IDTEXTJOIN用空格拼接筛选结果,自动跳过空的Employee ID- 外层
IF判断如果当前行无Class ID,返回空值,避免输出错误信息
方案2:QUERY分组计算(性能更高,适配大数据量)
如果数据量超过10万行,推荐使用QUERY一步完成去重+拼接,不需要单独在B2单元格写UNIQUE公式,直接在Sheet2的B2单元格输入即可自动溢出B、C两列的所有结果:
=QUERY(Sheet1!B2:I, "SELECT I, GROUP_CONCAT(B, ' ') WHERE I IS NOT NULL GROUP BY I ORDER BY I", 0)
逻辑说明:
GROUP BY I按Class ID分组GROUP_CONCAT(B, ' ')把同组的Employee ID用空格拼接- 自带空值过滤和结果排序,计算效率比逐行遍历的BYROW方案高30%以上
内容的提问来源于stack exchange,提问作者JamesReed68
相关产品推荐
相关产品推荐

