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

如何在指定范围内按每3列使用TEXTJOIN函数合并数据

按每3列批量合并数据到目标单元格(基于TEXTJOIN函数)

核心思路

用TEXTJOIN搭配INDEX、SEQUENCE函数,先按3列一组提取数据并合并每组内容,再将所有组的结果汇总到目标单元格。

公式示例(汇总所有组到单个单元格)

假设你的数据范围是$A$1:$Z$10,在目标单元格输入以下公式:

=TEXTJOIN(CHAR(10),TRUE,TEXTJOIN(" ",TRUE,INDEX($A$1:$Z$10,,SEQUENCE(3,1,3*(ROW(INDIRECT("1:"&INT(COLUMNS($A$1:$Z$10)/3)))-1)+{1,2,3}))))

公式拆解

  • COLUMNS($A$1:$Z$10):获取数据区域总列数,除以3取整得到总组数
  • ROW(INDIRECT("1:"&INT(...))):生成1到总组数的序列,对应每个3列组的序号
  • 3*(...)-1+{1,2,3}:计算每组对应的3列列号(比如第1组对应列1/2/3,第2组对应列4/5/6)
  • 内层TEXTJOIN(" ",TRUE,...):将每组的3个单元格用空格连接,可把" "换成你需要的分隔符(如"/")
  • 外层TEXTJOIN(CHAR(10),TRUE,...):将所有组的结果用换行分隔,若想用逗号分隔,直接把CHAR(10)换成","

按行单独汇总的公式

如果需要每行单独处理(每行的3列组合并后汇总到对应行的目标单元格),公式调整为:

=TEXTJOIN(CHAR(10),TRUE,TEXTJOIN(" ",TRUE,INDEX($A1:$Z1,,SEQUENCE(3,1,3*(COLUMN(INDIRECT("1:"&INT(COLUMNS($A1:$Z1)/3)))-1)+{1,2,3}))))

注意事项

  • 把公式里的$A$1:$Z$10或$A1:$Z1替换成你的实际数据范围
  • 若数据列数不是3的整数倍,公式会自动忽略最后不足3列的部分
  • 用换行分隔时,要开启目标单元格的「自动换行」功能

内容的提问来源于stack exchange,提问作者Robert Jan Ki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:31:06