=TEXTJOIN(", ",TRUE,A2:A6) 把 A2:A6 中的每个单元格合并成一段文本,各项之间用逗号加空格分隔。第一个参数是分隔符,第二个参数决定是否跳过空单元格,之后的所有参数都是要合并的文本。
| A | B | C | |
|---|---|---|---|
| 1 | Team | Members | |
| 2 | Ana | Ana, Ben, Chen, Dara, Eli | |
| 3 | Ben | ||
| 4 | Chen | ||
| 5 | Dara | ||
| 6 | Eli |
清空 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 跳过空单元格
| A | B | C | |
|---|---|---|---|
| 1 | Size | Result | |
| 2 | S | S, M, L, XL | |
| 3 | S, , M, L, , XL | ||
| 4 | M | ||
| 5 | L | ||
| 6 | |||
| 7 | XL |
C2 得到 S, M, L, XL。C3 保留了两个空单元格,空位显示为 , ,。只有当每一项的位置很重要时才用 FALSE,例如这个列表还要被另一个工具读回去。
同样的思路也能处理带可选中间名的全名。B2 为空时,=A2&" "&B2&" "&C2 会留下两个空格;而以空格为分隔符、第二个参数为 TRUE 的 TEXTJOIN 不会:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | First | Middle | Last | Full name |
| 2 | Ana | Maria | Silva | Ana Maria Silva |
| 3 | Ben | Okafor | Ben Okafor | |
| 4 | Chen | Li | Wu | Chen Li Wu |
| A | B | C | |
|---|---|---|---|
| 1 | Order | List | |
| 2 | 1041 | ||
| 3 | 1042 | ||
| 4 | |||
| 5 | 1045 | ||
| 6 | 1046 | ||
| 7 |
轮到你了: 在 C2 中,把 A2:A7 的订单号合并到一个单元格,用逗号加空格分隔,空单元格不要留下空位。
按条件合并:TEXTJOIN 加 FILTER
只想合并满足条件的行时,把 FILTER 放进 TEXTJOIN 里。FILTER 返回符合条件的姓名,TEXTJOIN 再把它们连起来:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Region | Region | Names | |
| 2 | Ana | North | North | Ana, Chen, Eli | |
| 3 | Ben | South | Ana, Chen, Eli | ||
| 4 | Chen | North | Regions | North, South, East | |
| 5 | Dara | East | |||
| 6 | Eli | North | |||
| 7 | Fay | South |
把 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")。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Region | East team | ||
| 2 | Ana | North | |||
| 3 | Ben | South | |||
| 4 | Chen | East | |||
| 5 | Dara | East | |||
| 6 | Eli | North | |||
| 7 | Fay | South |
轮到你了: 在 E2 中,列出地区为 East 的所有姓名,用逗号加空格分隔。
合并日期和数字时保留格式
TEXTJOIN 合并的是单元格存储的值,而不是单元格显示的内容。日期会以序列号的形式合并(2026-03-02 是 46083),百分比则变成小数。在 TEXTJOIN 里用 TEXT 先转换区域:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Meeting | Date | Dates | |
| 2 | Kickoff | 2026-03-02 | 46083, 46097, 46113 | |
| 3 | Review | 2026-03-16 | Mar 2, Mar 16, Apr 1 | |
| 4 | Launch | 2026-04-01 |
TEXTJOIN、CONCAT 与 & 的区别
| TEXTJOIN | CONCAT | & | |
|---|---|---|---|
| 能合并区域 | 能 | 能 | 不能,只能逐个单元格连接 |
| 在各项之间加分隔符 | 能,只需写一次 | 不能 | 每次都要手动输入 |
| 跳过空单元格 | 能,用 TRUE | 不能 | 不能 |
| 最早支持的版本 | Excel 2019 | Excel 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"))。