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

谷歌QUERY函数如何对含重复字符串的多行数据进行分组合并

Google Sheets QUERY结果重复行合并方案

你当前返回重复行的原因是QUERY仅会按规则返回匹配行,本身不支持同分组行的字段聚合合并,可通过唯一值遍历+按列取有效值的逻辑实现需求。

如果你使用的是葡萄牙语区域设置(原公式使用SE作为条件函数、反斜杠作为数组列分隔符),可直接使用以下公式替换原有F2单元格内容:

=ArrayFormula(
  DEIXAR(
    origem, TO_TEXT({A3:A\SE(G1:AK1>=B3:B;SE(G1:AK1<=B3:B+C3:C-1;D3:D;"*");"*")}),
    filtrado, FILTRO(origem, ÍNDICE(origem,,1)<>""),
    unicos, ÚNICO(ÍNDICE(filtrado,,1)),
    res, POR_LINHA(unicos, LAMBDA(n,
      POR_COLUNA(SEQUENCE(COLUNAS(filtrado)), LAMBDA(c,
        DEIXAR(
          vals, ÍNDICE(FILTRO(filtrado, ÍNDICE(filtrado,,1)=n),,c),
          SEERRO(ÍNDICE(vals, CORRESP(FALSO, vals="*", 0)), "*")
        )
      ))
    )),
    ORDENAR(res, 1, VERDADEIRO)
  )
)

如果后续切换为中文区域设置,可使用对应适配版本:

=ArrayFormula(
  LET(
    源数组, TO_TEXT({A3:A,IF(G1:AK1>=B3:B,IF(G1:AK1<=B3:B+C3:C-1,D3:D,"*"),"*")}),
    过滤后数组, FILTER(源数组, INDEX(源数组,,1)<>""),
    唯一姓名列, UNIQUE(INDEX(过滤后数组,,1)),
    结果, BYROW(唯一姓名列, LAMBDA(姓名,
      BYCOL(SEQUENCE(COLUMNS(过滤后数组)), LAMBDA(列序号,
        LET(
          当前列所有值, INDEX(FILTER(过滤后数组, INDEX(过滤后数组,,1)=姓名),,列序号),
          IFERROR(INDEX(当前列所有值, MATCH(FALSE, 当前列所有值="*", 0)), "*")
        )
      ))
    )),
    SORT(结果, 1, TRUE)
  )
)

实现逻辑

  • 复用你原有生成基础数组的逻辑,先过滤掉首列为空的无效行
  • 提取首列所有不重复的分组值作为合并基准
  • 遍历每个分组值,筛选出该分组对应的所有行数据
  • 对每一列数据优先取首个非*的有效值,整列全为*时保留*
  • 最终按首列排序输出,即可得到无重复行的合并结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:15:08