TEXTJOIN 函数:语法、示例与错误排查
更新于 2026-10-13 · 免费 · 兼容 Excel 与 Google Sheets
语法
=TEXTJOIN(分隔符, 是否忽略空白, 文本1, [文本2], ...)快速答案
TEXTJOIN 用你选的分隔符把多个值粘进一个单元格:=TEXTJOIN(", ", TRUE, A2:A8) 把一列变成一格里的「Doe, Smith, Lee」。TRUE 跳过空单元格,FALSE 保留空位——而结果是文本,不能再当数字参与计算。
语法
=TEXTJOIN(分隔符, 是否忽略空白, 文本1, [文本2], ...)| 参数 | 含义 |
|---|---|
| 分隔符 | 放在每两个值之间的文本:", " 生成逗号+空格列表,"-" 生成编码,CHAR(10) 在单元格内换行。需要加引号,也可以是单元格引用。 |
| 是否忽略空白 | TRUE 跳过空单元格,不留缺口;FALSE 为每个空白保留空位。没有默认值——必须写 TRUE 或 FALSE。 |
| 文本1, [文本2], ... | 要合并的值:单个单元格、整段区域或混合——最多 252 个文本参数。A2:A8 这样的区域会按顺序合并所有单元格。 |
根据区域设置,参数可能用分号而不是逗号分隔:=TEXTJOIN(", "; TRUE; A2:A8)。在以逗号作为小数符的国家/地区这是标准写法。
基本示例
=TEXTJOIN(", ", TRUE, A2:A8)招牌用法:整列折叠成一个可读列表——「Doe, Smith, Lee」——TRUE 顺手丢掉沿途的空单元格。适合摘要、邮件行,以及任何原始区域会一行一个值刷屏的场景。
=TEXTJOIN(CHAR(10), TRUE, B2:B10)用真正的换行符把多个值合并进一个单元格——地址块、核对清单、迷你报告。记得给单元格打开「自动换行」,否则换行会显示成一整行。
=TEXTJOIN("-", TRUE, A2, B2, C2)用零件拼编码和键值:SKU、订单号、URL slug。每个部件之间恰好一个连字符,从此不用手打分隔符。
=TEXTJOIN(", ", FALSE, A2:A8)同样的列表换成 FALSE:每个空单元格保留自己的位置,缺失值显示为「, ,」——当列表中的位置本身有意义、缺口必须可见时,这正是你要的。
TEXTJOIN 的结果是文本——一个不能求和、求平均、按数字匹配的值。如果合并结果还要参与计算,请保留原始单元格,或用 VALUE 把结果转回去。
常见错误与修复方法
| 症状 | 最常见原因 | 修复方法 |
|---|---|---|
| #NAME? | TEXTJOIN 拼写错误——或你的 Excel 早于 2019 / 不是 Microsoft 365(函数不存在),或你的 Excel 是其他语言版本,函数名被本地化了(UNIRCADENAS、JOINDRE.TEXTE、TEXTVERKETTEN)。 | 输入 =TEXT 让自动补全确认函数是否存在;不存在就升级 Office,或用对应语言版本的 Excel 打开文件。 |
| #VALUE! | 合并结果超过 32,767 字符——单元格硬上限。超长文本的大范围会悄悄溢出成这个错误。 | 把区域拆成多个 TEXTJOIN 单元格(A2:A500、A501:A1000……)再合并,或精简源文本。 |
| 列表挤成一整行 | 换行符其实在里面,只是单元格不显示:CHAR(10) 需要目标单元格开启自动换行。 | 选中单元格并开启「自动换行」——CHAR(10) 换行立刻变成真正的新行。 |
| 列表里出现「, ,」这样的缺口 | ignore_empty 设成了 FALSE,空单元格在输出里保留位置。 | 把第二个参数改成 TRUE;如果缺口本身就是数据问题的症状,先清洗空白。 |
| 分隔符出现在开头或结尾 | 第一个参数传了区域或传错了文本:=TEXTJOIN(A2:A8, TRUE, ...) 把单元格当成了分隔符本身;带尾部空格的分隔符会在结尾露出一个。 | 把分隔符字符串加引号放第一个参数——=TEXTJOIN(", ", TRUE, A2:A8)——并检查它有没有多余空格。 |
隐藏空格同样毁掉合并列表:「Doe 」合并成「Doe , Smith」,分隔符前多出一段间隙。先清洗源区域,合并出来的列表就会严丝合缝。
TEXTJOIN 与 CONCAT、CONCATENATE 对比
| TEXTJOIN | CONCAT / CONCATENATE | |
|---|---|---|
| 分隔符 | 一个参数覆盖整个合并——自动放在每两个值之间 | 没有——每个间隔都要手打分隔符 |
| 空单元格 | ignore_empty 一个开关决定跳过还是保留 | 空白按空字符串合并——出现缺口,必须提前清洗 |
| 区域 | 直接接受整段区域:=TEXTJOIN(", ", TRUE, A2:A8) | 只接受单个单元格和字面量——给区域会报溢出数组错误,或者不带分隔符直接粘连 |
| 可用版本 | Excel 2019 及以后、Microsoft 365(Google Sheets 同样支持) | 所有版本——CONCAT 自 2016 起,CONCATENATE 最早就有(Google Sheets 同样支持) |
=CONCATENATE(A2, " ", B2)老式写法:每个分隔符都要手打,三个单元格就已经要写两个。两三个已知单元格这样写没问题——但整列合并时,TEXTJOIN 加 ignore_empty 更短、对空白更安全、一年后再读也更容易。
Google Sheets 中的 TEXTJOIN
Google Sheets 支持与 Excel 相同三个参数、相同行为的 TEXTJOIN,上面的公式可以直接粘贴使用。
- 在以逗号作为小数符的区域设置(欧洲和拉美大部分地区)中,参数之间输入分号:=TEXTJOIN(", "; TRUE; A2:A8)。Excel 行为相同。
- Sheets 还有 JOIN,作用类似 TEXTJOIN 但自动跳过空单元格——不用记 TRUE/FALSE 参数。
- 反向操作也存在:SPLIT 把一个单元格拆成多个,正好与 TEXTJOIN 相反。
- 和 Excel 一样,输出是文本:上限 32,767 字符,数字合并成字符串后就不再是数字。
限制与进阶技巧
- TEXTJOIN 抹掉数据类型:日期、货币、小数按显示文本合并,结果再也不能参与计算。数字重要就保留源单元格。
- TRUE 还会吞掉只含空字符串 "" 的单元格——数据干净时很方便,但空字符串本身有意义时很危险。
- 分隔符只出现在值与值之间——绝不在第一个值之前或最后一个值之后。看到开头或结尾多了分隔符,就是参数顺序错了。
- 合并几千行后每次编辑都会重算:超大范围建议改用 Power Query 或一次性粘贴为值,而不是活公式。
- TEXTSPLIT 是反向操作:把一个单元格拆回多列或多行。合并用于交付列表,拆分用于解包。
把 TEXTJOIN 当展示层:先清洗值,再合并。合并列表的整洁度取决于喂给它的单元格——把源头擦亮,结果就不需要手工修补。
相关工具
相关函数
常见问题
TEXTJOIN 在 Excel 中有什么用?
它把多个文本值合并进一个单元格,并在它们之间放上你选的分隔符:=TEXTJOIN(", ", TRUE, A2:A8) 把一列变成「Doe, Smith, Lee」。TRUE 参数让它在途中跳过空单元格。
哪些 Excel 版本有 TEXTJOIN?
Excel 2019 及以后,加上 Microsoft 365。Excel 2016 及更早没有这个函数——#NAME? 就是信号——那时用 CONCATENATE 或 & 运算符代替。
怎么用换行符合并多个值?
用 CHAR(10) 作分隔符:=TEXTJOIN(CHAR(10), TRUE, A2:A8)。每个值独占一行挤在同一个单元格里——记得打开「自动换行」,否则换行会藏成一整行。
TEXTJOIN 为什么返回 #VALUE!?
合并后的字符串超过了 32,767 字符——单个单元格的硬上限。把区域拆给多个 TEXTJOIN 再合并结果,或者精简源文本。
TEXTJOIN 和 CONCAT 有什么区别?
CONCAT 只是零分隔符地粘连,且只接受单个单元格;TEXTJOIN 在每两个值之间加分隔符,还能一个开关跳过空白。列表和区域场景下,TEXTJOIN 同时取代 CONCAT 和 CONCATENATE。
怎么让 TEXTJOIN 忽略空单元格?
第二个参数设为 TRUE:=TEXTJOIN(", ", TRUE, A2:A8)。空白不会在输出里留缺口。FALSE 为每个空白保留空位——位置有意义、缺口必须可见时用它。
TEXTJOIN 在 Google Sheets 里能用吗?
能——同名、同三个参数、同样行为,只在逗号小数符地区把参数写成半角分号。Sheets 还有自动跳过空白的 JOIN,以及反向操作的 SPLIT。
准备好处理你自己的文件了吗?
打开合并 Excel 列 — 免费