You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets查询问题:拆分逗号分隔邮箱并去重合并项目数据

解决Google Sheets按项目合并并去重邮箱的问题

原公式问题分析

你之前的公式核心问题在于:拆分邮箱后通过GROUP BY Col1, Col2会将每个项目下的单个邮箱单独分组,再用TRANSPOSE转置后结构混乱,没有实现同一项目下去重邮箱的合并,因此无法达到预期效果。

修正后的公式(推荐,支持新版Google Sheets)

使用LET、BYROW等函数实现清晰逻辑,直接按项目合并去重后的邮箱:

=ARRAYFORMULA(
  LET(
    unique_projects, UNIQUE(FILTER(A1:A50, A1:A50<>"")),
    merged_emails, BYROW(unique_projects, LAMBDA(project, 
      TEXTJOIN(", ", TRUE, UNIQUE(TRIM(SPLIT(TEXTJOIN(", ", TRUE, FILTER(B1:B50, A1:A50=project)), ",", TRUE, TRUE))))
    )),
    HSTACK(unique_projects, merged_emails)
  )
)

公式逻辑拆解

  • UNIQUE(FILTER(A1:A50, A1:A50<>"")):提取所有非空的唯一项目列表
  • BYROW(unique_projects, LAMBDA(project, ...)):遍历每个项目,执行以下操作:
    1. FILTER(B1:B50, A1:A50=project):筛选当前项目对应的所有邮箱单元格
    2. TEXTJOIN(", ", TRUE, ...):将同一项目的多个邮箱单元格先合并成一个大字符串
    3. SPLIT(..., ",", TRUE, TRUE):拆分所有邮箱(包括来自不同单元格的)
    4. TRIM(...):去除邮箱前后的空格(避免拆分后带空格的重复项)
    5. UNIQUE(...):对拆分后的邮箱去重
    6. TEXTJOIN(", ", TRUE, ...):将去重后的邮箱重新合并成逗号分隔的字符串
  • HSTACK(unique_projects, merged_emails):将项目列和合并后的邮箱列横向拼接,形成最终结果

兼容旧版Google Sheets的写法(无LET/BYROW)

如果你的Sheet版本不支持LET和BYROW,可以使用以下嵌套公式:

=ARRAYFORMULA(
  HSTACK(
    UNIQUE(FILTER(A1:A50, A1:A50<>"")),
    TEXTJOIN(", ", TRUE, UNIQUE(TRIM(SPLIT(TEXTJOIN(", ", TRUE, FILTER(B1:B50, A1:A50=INDEX(UNIQUE(FILTER(A1:A50, A1:A50<>"")), ROW(A1:INDEX(A:A, COUNTA(UNIQUE(FILTER(A1:A50, A1:A50<>""))))))), ",", TRUE, TRUE))))
  )
)

注意事项

  • 确保A1:A50和B1:B50范围覆盖你的实际数据,可根据需要调整为A:A和B:B(但会增加计算量)
  • TRIM函数用于处理邮箱前后的空格,避免出现类似"test@example.com"和" test@example.com"被判定为不同邮箱的情况

内容的提问来源于stack exchange,提问作者Drewsephine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:04:51