在线 Excel 编辑器
免费使用

CONCAT 函数:语法、示例与错误排查

更新于 2026-10-13 · 免费 · 兼容 Excel 与 Google Sheets

语法

=CONCAT(text1, [text2], ...)

快速答案

CONCAT 把多个值无间隔地粘进一个单元格:=CONCAT(A2:A4) 把三个单元格折成「DoeSmithLee」。相比旧的 CONCATENATE,它最大的优势是接受整个区域——但所有分隔符(空格、横杠)都得自己敲进去,而且结果是文本,不能再参与计算。

语法

=CONCAT(text1, [text2], ...)
参数含义
text1第一个要合并的值——单元格、数字、带引号的字面量,或 A2:A8 这样的整个区域。必填。
[text2], ...可选的更多值,最多 254 个。单元格、区域、字面量可以混搭:=CONCAT(A2, B2:B5, "-done")。

视区域设置不同,参数可能用分号而不是逗号分隔:=CONCAT(A2; " "; B2)。在用逗号作小数分隔符的国家/地区是标准行为。

一个区别比其他所有都重要:CONCAT 接受整个区域——=CONCAT(A2:A8) 是合法公式。而旧的 CONCATENATE 遇到区域会报错,或(取决于版本)悄悄只取第一个单元格。

基本示例

=CONCAT(A2, " ", B2)

日常的姓名拼接:名在 A2,姓在 B2。CONCAT 默认什么分隔符都不加,所以空格是你自己敲在两个单元格之间的字面量——忘了它,「Doe」就直接怼上「Smith」。

=CONCAT(A2:A4)

CONCATENATE 做不到的区域技巧:三个单元格折成一个零分隔的编码——「AE2026XL」。适合拼产品密钥、SKU 编码和 slug,这些场景里各部分之间不允许有任何东西。

=CONCAT(A2, "-", B2, "-", C2)

带分隔符的键和编码:每一段之间是你在引号里手敲的横杠。三个值要敲两个横杠——值越多,引号敲得越多,这正是 TEXTJOIN 接管的时刻。

="Total: " & SUM(B2:B10)

& 运算符能就地完成同样的工作,不需要函数。两三个值时很多人更爱用它——当值来自区域或列表太长没法手打时,CONCAT 才是赢家。

CONCAT 的结果是文本。「12」和「34」拼成「1234」后不能再求和,日期会拼成序列号(45296)而不是单元格显示的样子。计算请保留源单元格,或用 VALUE 转换回来。

常见错误与修复方法

症状最常见原因修复
#NAME?CONCAT 拼写错误——或 Excel 早于 2016(函数不存在),或你的 Excel 是其他语言版本,函数名被本地化(CONCATENAR、CONCATENER、VERKETTEN)。输入 =CONC 让自动补全确认有什么;旧版本改用 CONCATENATE 或 & 运算符。
#VALUE!合并结果超过 32,767 字符——单元格的硬上限。超大区域会悄悄溢出成这个错误。把区域拆到多个 CONCAT 单元格(A2:A500、A501:A1000……)再合并结果。
值直接怼在一起(「DoeSmith」)单元格之间没有分隔符参数——CONCAT 自己什么都不插。在每对值之间手敲 " " 或 ", " 字面量,或换 TEXTJOIN——它会自动插入分隔符。
日期拼成「45296」日期底层是序列号,CONCAT 看到的是数字而不是显示格式。包一层:=CONCAT(A2, " ", TEXT(B2, "yyyy/mm/dd"))——格式代码跟随你的区域设置。
数字丢失了格式同理:单元格格式不会带进合并——单元格显示 1,234.50,拼出来却是「1234.5」。用 TEXT(A2, "#,##0.00") 包一层加千位分隔符,或让源单元格继续作为显示依据。

隐藏空格从两头毁掉合并:「Doe 」加「 Smith」会变成中间双空格的「Doe Smith」。先清洗源区域,拼出来的结果才严丝合缝。

CONCAT 与 CONCATENATE、& 运算符对比

CONCATCONCATENATE& 运算符
区域支持——=CONCAT(A2:A8) 折叠整个区域不支持——报错或只取第一个单元格不支持——每次只能引用一个单元格
分隔符内置没有——值之间手敲字面量内置没有——同样手敲在值之间放 &,分隔符写字面量
可用版本Excel 2016 及以后最早的 Excel 起就有所有版本
最适合合并区域和编码必须保持兼容的老工作簿就地的两值快速拼接
=CONCATENATE(A2, " ", B2)

旧拼法在所有 Excel 里都有效,也是大多数非英文版本使用的名字(CONCATENAR、CONCATENER、VERKETTEN)——参数相同、结果相同,只是不支持区域。一旦出现区域,Microsoft 365 用户就可以换 CONCAT。

CONCAT 与 TEXTJOIN 对比

CONCATTEXTJOIN
分隔符没有——每个分隔符都手敲一个参数管全部:=TEXTJOIN(", ", TRUE, A2:A8)
空单元格拼成空字符串——手敲分隔符时会出现双空隙ignore_empty=TRUE 一键跳过
区域支持,但单元格之间没有分隔符支持,且每对值之间自动放分隔符
可用版本Excel 2016 及以后Excel 2019 及以后、Microsoft 365
最适合各部分必须紧贴的编码和 ID由列拼出的可读列表

经验法则:各部分必须紧贴用 CONCAT,结果给人看用 TEXTJOIN。两者都返回文本,都不能再计算——前面的警告对两者都适用。

Google Sheets 中的 CONCAT

Google Sheets 的 CONCAT 和 CONCATENATE 与 Excel 语法一致,基础公式可以直接粘贴过去。真正要拼列表时,Sheets 还提供 JOIN——行为类似 TEXTJOIN,但自动跳过空单元格,不用写 TRUE。

  • 逗号作小数分隔符的地区改用分号:=CONCAT(A2; " "; B2)——Sheets 和 Excel 行为一致。
  • JOIN(range, delimiter) 是 Sheets 拼无空隙列表的捷径;TEXTJOIN 也存在,参数完全相同。
  • 反向操作是 SPLIT:把一个单元格切开成多个,正好撤销 CONCAT 拼上的东西。

限制与进阶技巧

  • 没有忽略空单元格的开关:中间有空格单元格加上手敲分隔符,会留下「Doe Smith」这样的双空格。先清洗源数据,或改用 TEXTJOIN。
  • 254 个参数的上限是每条公式——成千上万行时,用区域(=CONCAT(A2:A500))而不是逐个列出单元格。
  • 随手拼两个值?& 打字更快。整个区域?CONCAT。带分隔符的可读列表?TEXTJOIN——按形状选,不按习惯选。
  • 看起来像数字的结果可以用 VALUE 转回来:=VALUE(SUBSTITUTE(A2, " ", "")) 把清洗过的文本变回真数字。

把 CONCAT 当作流水线的最后一步,而不是第一步:先剪掉杂乱空格、补齐空白,然后再拼。拼接的质量就是你喂进去的单元格的质量。

相关工具

相关函数

常见问题

CONCAT 在 Excel 中有什么用?

它把多个值无间隔地粘进一个单元格:=CONCAT(A2, " ", B2) 用手敲的空格拼两个名字,=CONCAT(A2:A4) 把整个区域折成一个字符串。它是 CONCATENATE 的现代替代品。

CONCAT 和 CONCATENATE 有什么区别?

只有区域:CONCAT 支持 =CONCAT(A2:A8) 并折叠整个区域,CONCATENATE 遇到区域会报错或只取第一个单元格。对单个单元格两者行为完全一致——参数相同、结果相同。

怎么在合并的值之间加空格或逗号?

把分隔符作为字面量敲在值之间:=CONCAT(A2, ", ", B2)。对整列数据换 TEXTJOIN 更短——它的第一个参数一次管住所有间隙:=TEXTJOIN(", ", TRUE, A2:A8)。

为什么 CONCAT 之后日期变成了 45296 这样的数字?

Excel 用序列号存日期,CONCAT 合并的是存储值而不是显示格式。先把日期包进 TEXT:=CONCAT(A2, " ", TEXT(B2, "yyyy/mm/dd")),就能保持可读。

哪些 Excel 版本有 CONCAT?

Excel 2016 及以后,加上 Microsoft 365。Excel 2013 及更早没有这个名字——#NAME? 就是信号——那时用 CONCATENATE 或 & 运算符代替。

为什么 CONCAT 之后数字不能计算了?

合并产生的是文本——「1234」看着像数字,求和却是零。计算请保留原始单元格,或需要数字时用 =VALUE(A2) 把结果转回来。

CONCAT 在 Google Sheets 里能用吗?

能——名字、语法、文本输出行为都一样,只有在逗号作小数分隔符的地区才用分号。Sheets 还提供自动跳过空单元格的 JOIN,以及作为反向操作的 SPLIT。

准备好处理你自己的文件了吗?

打开合并 Excel 列 — 免费