你现在的位置:
函数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 保留空值的效果
| 数据 | A | B | C | D |
|---|---|---|---|---|
| 内容 | 甲 | 乙 |
=TEXTJOIN("-", TRUE, A1:D1) ← 结果:甲-乙(忽略空值)
=TEXTJOIN("-", FALSE, A1:D1) ← 结果:甲--乙-(保留空值)
六、TEXTJOIN vs CONCAT/CONCATENATE 对比
| 特性 | CONCATENATE | CONCAT | TEXTJOIN |
|---|---|---|---|
| 分隔符 | 无(需手动添加) | 无 | ✅ 自动添加 |
| 区域支持 | 不支持 | 支持 | ✅ 支持 |
| 空值处理 | 保留 | 保留 | ✅ 可忽略 |
| 参数数量 | 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! 错误 | 检查区域引用是否正确,避免整列引用过大 |

发表回复