RSS订阅 爱办公,享无限效率

你现在的位置:

函数TEXTJOIN非常强大的文本合并

一、函数概述

TEXTJOIN 是 Excel 2016(Office 365)及更高版本引入的文本函数,用于将多个文本字符串(或单元格区域)合并为单个字符串,并可指定分隔符和是否忽略空值 。

核心优势

  • 区域合并:可直接合并整行/整列/多区域
  • 自动分隔:自动在每项之间插入指定分隔符
  • 空值控制:可选择是否忽略空单元格
  • 多区域支持:最多可合并 252 个区域
  • 动态数组:配合 FILTER 等函数实现动态文本合并

二、语法结构

=TEXTJOIN(
    delimiter,      ← 必需:分隔符(如逗号、空格、换行符)
    ignore_empty,   ← 必需:TRUE=忽略空单元格,FALSE=保留空单元格
    text1,          ← 必需:第一个文本字符串或单元格区域
    [text2], ...    ← 可选:第2到第252个文本字符串或区域
)

三、参数详解

参数必需说明常用取值
delimiter分隔符,可以是文本、单元格引用或公式","" "CHAR(10)(换行)
ignore_empty是否忽略空单元格TRUE(忽略)、FALSE(保留为空)
text1要合并的第一个文本/区域"Hello"、A1:A10、B1:G1
text2…第2到第252个文本/区域可多区域混合

四、分隔符技巧

分隔符写法效果
逗号","项目1,项目2,项目3
逗号+空格", "项目1, 项目2, 项目3
空格" "项目1 项目2 项目3
换行符CHAR(10)每行一个项目(需开启自动换行)
斜杠"/"项目1/项目2/项目3
自定义A1引用单元格作为分隔符

五、实用示例

示例 1:基础区域合并(最常用)

场景:合并 A1:A5 的姓名,用逗号分隔

=TEXTJOIN(", ", TRUE, A1:A5)
  • 分隔符:逗号+空格
  • 忽略空单元格
  • 结果:张三, 李四, 王五, 赵六

示例 2:多列数据合并(横向合并)

场景:合并整行数据,用斜杠分隔

=TEXTJOIN("/", TRUE, B2:G2)
  • 合并 B2 到 G2 的所有单元格
  • 结果:产品A/2024/北京/销售部/已完成/备注

示例 3:多区域混合合并

场景:合并姓名列和职位列

=TEXTJOIN(" | ", TRUE, A2:A5, C2:C5)
  • 先合并 A2:A5,再合并 C2:C5
  • 两个区域之间也会插入分隔符
  • 结果:张三 | 李四 | 王五 | 赵六 | 经理 | 主管 | 专员 | 总监

示例 4:添加前后缀(嵌套技巧)

场景:给合并结果添加固定开头和结尾

=TEXTJOIN(", ", TRUE, "参与者", A2:A5, "结束")
  • 结果:参与者, 张三, 李四, 王五, 结束

更灵活的前后缀

="参与者:" & TEXTJOIN(", ", TRUE, A2:A5) & "(共" & COUNTA(A2:A5) & "人)"
  • 结果:参与者:张三, 李四, 王五(共3人)

示例 5:条件合并(配合 IF)

场景:仅合并”销售部”的员工姓名

=TEXTJOIN(", ", TRUE, IF(B2:B10="销售部", A2:A10, ""))
  • 用 IF 判断部门,非销售部返回空字符串
  • 配合 TRUE 参数自动忽略空值
  • 结果:仅销售部员工姓名列表

示例 6:配合 FILTER 动态合并

场景:根据筛选结果动态合并文本

=TEXTJOIN(CHAR(10), TRUE, FILTER(A2:A20, B2:B20="已完成"))
  • 用 FILTER 筛选”已完成”的项目
  • CHAR(10) 换行符分隔,每行显示一个项目
  • 需设置单元格格式为”自动换行”

示例 7:生成 SQL 语句

场景:根据 ID 列表生成 IN 语句

="SELECT * FROM 订单 WHERE 订单ID IN (" & TEXTJOIN(",", TRUE, A2:A10) & ")"
  • 结果:SELECT * FROM 订单 WHERE 订单ID IN (1001,1002,1003,1004,1005)

示例 8:逆向拆分还原(配合 TEXTSPLIT)

场景:将拆分后的数据重新合并

=TEXTJOIN("、", TRUE, TEXTSPLIT(A1, ","))
  • 先用 TEXTSPLIT 按逗号拆分
  • 再用 TEXTJOIN 用中文顿号重新合并
  • 实现分隔符转换

示例 9:跨工作表合并

场景:合并多个工作表的同一列

=TEXTJOIN(", ", TRUE, 1月!A2:A10, 2月!A2:A10, 3月!A2:A10)
  • 直接引用多个工作表的区域
  • 最多支持 252 个区域

示例 10:处理空值对比

场景:比较忽略空值 vs 保留空值的效果

数据ABCD
内容
=TEXTJOIN("-", TRUE, A1:D1)    ← 结果:甲-乙(忽略空值)
=TEXTJOIN("-", FALSE, A1:D1)   ← 结果:甲--乙-(保留空值)

六、TEXTJOIN vs CONCAT/CONCATENATE 对比

特性CONCATENATECONCATTEXTJOIN
分隔符无(需手动添加)自动添加
区域支持不支持支持支持
空值处理保留保留可忽略
参数数量255个253个252个区域
易用性繁琐中等最简单

示例对比

=CONCATENATE(A1,", ",B1,", ",C1)        ← 繁琐
=CONCAT(A1:B1,", ",C1)                  ← 无分隔符控制
=TEXTJOIN(", ", TRUE, A1:C1)             ← ✅ 简洁优雅

七、注意事项

注意点说明
版本要求Excel 2016+、Excel 365、Excel 网页版;Excel 2013 及更早版本不支持
结果长度限制最大 32,767 字符(单元格上限)
空单元格变空字符串数字 0 不会被忽略,只有真正空单元格才会被 TRUE 参数忽略
数组公式在旧版 Excel 中,配合 IF 使用时需按 Ctrl+Shift+Enter
分隔符转义如需使用双引号作为分隔符,需写成 """"(四个双引号)

八、高级组合技巧

组合函数用途示例
FILTER条件合并=TEXTJOIN(", ", TRUE, FILTER(A:A, B:B="条件"))
UNIQUE去重后合并=TEXTJOIN(", ", TRUE, UNIQUE(A1:A100))
SORT排序后合并=TEXTJOIN(", ", TRUE, SORT(A1:A10))
IF + ISNUMBER仅合并数字=TEXTJOIN(",", TRUE, IF(ISNUMBER(A1:A10),A1:A10,""))
INDEX + SEQUENCE隔行合并=TEXTJOIN(",", TRUE, INDEX(A:A, SEQUENCE(10,,1,2)))

九、常见问题解决

问题解决方案
结果太长显示不全检查单元格格式是否为”自动换行”,或缩小字体
包含不需要的 0确保空单元格是真正的空,而非公式返回的 0
分隔符显示为公式分隔符需加引号,如 "," 而非 ,
#VALUE! 错误检查区域引用是否正确,避免整列引用过大

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注