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

如何在Google Sheet中使用ArrayFormula结合TEXTJOIN自动合并非空行的多列内容

解决Google Sheets中逐行合并B-K列并自动生效的问题

你遇到的重复问题,核心原因是直接用ArrayFormula套TEXTJOIN时,TEXTJOIN会一次性合并整个B-K范围的所有内容,然后把这个结果复制到每一行,自然就出现了重复。下面给你两种靠谱的解决方案,分别适配新版和旧版Google Sheets:

方案一:新版Sheets推荐(用BYROW逐行处理)

这是最简洁高效的方法,新版Google Sheets支持BYROW函数,可以对每一行单独执行合并操作:

=BYROW(B2:K, LAMBDA(row, TEXTJOIN(", ", TRUE, row)))

参数说明:

  • B2:K:指定要处理的列范围(从B列到K列,从第2行开始,你可以根据实际表头行调整)
  • LAMBDA(row, ...):定义对每一行的处理逻辑,row代表当前循环到的行
  • TEXTJOIN(", ", TRUE, row):用逗号加空格分隔符合并当前行的非空单元格,TRUE表示忽略空值,避免出现多余的分隔符

如果想要自动跳过完全空的行(即B-K列都为空的行不输出内容),可以稍微修改公式:

=BYROW(B2:K, LAMBDA(row, IF(COUNTA(row)=0, "", TEXTJOIN(", ", TRUE, row))))

方案二:旧版Sheets兼容方案(用ArrayFormula+INDEX)

如果你的Sheets版本不支持BYROW,可以用ArrayFormula结合INDEX逐行提取列内容进行合并:

=ArrayFormula(
  IF(ROW(B2:B)=1, "合并列",  // 可选:设置表头
  IF(COUNTA(B2:K)=0, "",
  TEXTJOIN(", ", TRUE,
    INDEX(B:K, ROW(B2:B)-1, 1),
    INDEX(B:K, ROW(B2:B)-1, 2),
    INDEX(B:K, ROW(B2:B)-1, 3),
    INDEX(B:K, ROW(B2:B)-1, 4),
    INDEX(B:K, ROW(B2:B)-1, 5),
    INDEX(B:K, ROW(B2:B)-1, 6),
    INDEX(B:K, ROW(B2:B)-1, 7),
    INDEX(B:K, ROW(B2:B)-1, 8),
    INDEX(B:K, ROW(B2:B)-1, 9),
    INDEX(B:K, ROW(B2:B)-1, 10)
  ))
))

这个公式通过INDEX按行号提取每一行的B-K列内容,再用TEXTJOIN合并,ArrayFormula确保对所有行生效。

为什么之前的方法会重复?

举个例子,如果你直接写:

=ArrayFormula(TEXTJOIN(", ", TRUE, B2:K))

TEXTJOIN会把B2到K的所有单元格内容合并成一个大字符串,然后ArrayFormula会把这个字符串填充到每一行,所以每一行显示的都是完全相同的内容,这就是你看到的重复问题。而BYROW是逐行独立处理,每一行只合并当前行的B-K列,完美解决重复问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:52:28