Menu

Excel TEXTJOIN 函数:用分隔符合并区域

=TEXTJOIN(", ",TRUE,A2:A6) 把 A2:A6 的每个单元格合并成一段文本,各项之间用逗号加空格分隔,并跳过空单元格。再加上 FILTER,就能只合并满足条件的行。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=TEXTJOIN(", ",TRUE,A2:A6) 把 A2:A6 中的每个单元格合并成一段文本,各项之间用逗号加空格分隔。第一个参数是分隔符,第二个参数决定是否跳过空单元格,之后的所有参数都是要合并的文本。

把一列合并到一个单元格
C2
ABC
1TeamMembers
2AnaAna, Ben, Chen, Dara, Eli
3Ben
4Chen
5Dara
6Eli
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

清空 A 列中的任意一个姓名:C2 会随之更新,而且不会出现连续两个逗号。TEXTJOIN 需要 Excel 2019 或更高版本(包括 Microsoft 365);在 Excel 2016 中它会显示 #NAME?。

TEXTJOIN 语法

=TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)
  • delimiter:放在各项之间的文本,要加引号。可以是 ", "、"; "、" | "、"-",或者用 "" 表示不加分隔符。
  • ignore_empty:TRUE 跳过空单元格,FALSE 保留空单元格,这样就会出现两个分隔符紧挨在一起。
  • text1, text2, ...:单元格、区域或加引号的文本。最多 252 个,区域可以是一行、一列或一个矩形区域。

用 ignore_empty 跳过空单元格

TRUE 跳过空值,FALSE 保留空值
C2
ABC
1SizeResult
2SS, M, L, XL
3S, , M, L, , XL
4M
5L
6
7XL
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C2 得到 S, M, L, XL。C3 保留了两个空单元格,空位显示为 , ,。只有当每一项的位置很重要时才用 FALSE,例如这个列表还要被另一个工具读回去。

同样的思路也能处理带可选中间名的全名。B2 为空时,=A2&" "&B2&" "&C2 会留下两个空格;而以空格为分隔符、第二个参数为 TRUE 的 TEXTJOIN 不会:

带可选中间名的全名
D2
ABCD
1FirstMiddleLastFull name
2AnaMariaSilvaAna Maria Silva
3BenOkaforBen Okafor
4ChenLiWuChen Li Wu
点击单元格查看它的公式。修改数字或公式,表格会重新计算。
合并订单号
C2
ABC
1OrderList
21041
31042
4
51045
61046
7
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中,把 A2:A7 的订单号合并到一个单元格,用逗号加空格分隔,空单元格不要留下空位。

按条件合并:TEXTJOIN 加 FILTER

只想合并满足条件的行时,把 FILTER 放进 TEXTJOIN 里。FILTER 返回符合条件的姓名,TEXTJOIN 再把它们连起来:

North 地区的姓名
E2
ABCDE
1NameRegionRegionNames
2AnaNorthNorthAna, Chen, Eli
3BenSouthAna, Chen, Eli
4ChenNorthRegionsNorth, South, East
5DaraEast
6EliNorth
7FaySouth
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

把 D2 改成 South,两个公式都会列出 Ben 和 Fay。E2 用的是 FILTER,需要 Excel 2021 或 Microsoft 365。E3 是 Excel 2019 的写法:地区匹配时 IF 返回姓名,否则返回空文本,TRUE 再把空文本去掉。在 Excel 2019 中,E3 要按 Ctrl+Shift+Enter 确认(Mac 上按 Cmd+Shift+Enter)。

另外两种常用组合:

  • 只保留唯一值:E4 中的 =TEXTJOIN(", ",TRUE,UNIQUE(B2:B7)) 得到 North, South, East。
  • 排序后合并:=TEXTJOIN(", ",TRUE,SORT(FILTER(A2:A7,B2:B7=D2)))。

如果没有任何行符合条件,FILTER 会返回 #CALC!,TEXTJOIN 也一样。给 FILTER 加第三个参数来处理这种情况:FILTER(A2:A7,B2:B7=D2,"none")。

East 团队
E2
ABCDE
1NameRegionEast team
2AnaNorth
3BenSouth
4ChenEast
5DaraEast
6EliNorth
7FaySouth
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 E2 中,列出地区为 East 的所有姓名,用逗号加空格分隔。

合并日期和数字时保留格式

TEXTJOIN 合并的是单元格存储的值,而不是单元格显示的内容。日期会以序列号的形式合并(2026-03-02 是 46083),百分比则变成小数。在 TEXTJOIN 里用 TEXT 先转换区域:

列表中的日期
D2
ABCD
1MeetingDateDates
2Kickoff2026-03-0246083, 46097, 46113
3Review2026-03-16Mar 2, Mar 16, Apr 1
4Launch2026-04-01
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

TEXTJOIN、CONCAT 与 & 的区别

TEXTJOINCONCAT&
能合并区域能能不能,只能逐个单元格连接
在各项之间加分隔符能,只需写一次不能每次都要手动输入
跳过空单元格能,用 TRUE不能不能
最早支持的版本Excel 2019Excel 2019所有版本

只连接两三个单元格时,& 最快,参见 concatenate。列表不论多长,都用 TEXTJOIN。有一个限制要知道:一个单元格最多容纳 32,767 个字符,合并后的文本超过这个长度时,TEXTJOIN 会返回 #VALUE!。

常见问题

Excel 中 TEXTJOIN 函数有什么作用?

它把单元格或区域中的文本合并起来,并在各项之间插入分隔符:=TEXTJOIN(", ",TRUE,A2:A6) 把 5 个单元格变成一个用逗号分隔的列表。第二个参数 TRUE 表示跳过空单元格。

TEXTJOIN 怎么按条件合并?

在里面套一个 FILTER:=TEXTJOIN(", ",TRUE,FILTER(A2:A7,B2:B7="North")) 只合并地区为 North 的姓名。Excel 2019 没有 FILTER,可以用 =TEXTJOIN(", ",TRUE,IF(B2:B7="North",A2:A7,"")),并按 Ctrl+Shift+Enter 确认。

哪些 Excel 版本有 TEXTJOIN?

Excel 2019、Excel 2021、Microsoft 365,以及网页版 Excel。在 Excel 2016 及更早版本中它会显示 #NAME?,这时请用 & 连接。Google Sheets 也有 TEXTJOIN。

为什么 TEXTJOIN 显示的是数字而不是日期?

TEXTJOIN 合并的是单元格中存储的值,而日期是以序列号存储的。先转换日期:=TEXTJOIN(", ",TRUE,TEXT(B2:B4,"mmm d"))。

Coddy 编程语言插图

和 Coddy 一起学编程

开始