TEXTJOIN与TEXTSPLIT教程:Excel文本拆分合并神器

TEXTJOIN与TEXTSPLIT教程:Excel 效率工具文本拆分合并神器

【摘要】详解Excel中TEXTJOIN与TEXTSPLIT两个文本函数的用法,手把手教你用它们实现批量合并、按分隔符拆分、提取关键词等高级操作,附真实案例和练习素材,让你的数据处理效率翻倍。

一、处理文本数据的那些痛点

做Excel的人,谁没被文本数据折腾过?

领导扔过来一张表,所有的姓名都挤在一个单元格里,用顿号隔开,让你拆成一列。怎么办?一个一个复制粘贴?几十行还好,几百行呢?

又或者,你有一列零散的数据,需要把它们合并成一句话,中间用逗号隔开。用&符号一个一个连?写公式都要写半天,万一中间有空值,还会多出好几个逗号。

再高级一点的需求:从一段混乱的文本里提取关键词、去重、按规则重新排列……这些操作放在以前,要么用复杂的嵌套公式,要么得写VBA,对普通用户来说门槛太高了。

好消息是,微软在较新版本的Excel中加入了两个超级实用的文本函数——TEXTJOIN和TEXTSPLIT。一个负责「合」,一个负责「分」,配合使用,几乎能解决你遇到的所有文本处理难题。

今天这篇文章,我会从基础用法讲到高级组合,配合真实案例,带你彻底掌握这两个函数。看完之后,你处理文本数据的效率至少提升3倍。

二、TEXTJOIN函数详解:批量合并文本神器

TEXTJOIN,顾名思义,就是「Text + Join」,把文本连接起来。它比我们熟悉的&运算符和CONCAT函数强大得多,因为它支持自定义分隔符,还能自动忽略空值。

图1:TEXTJOIN函数工作原理

2.1 函数语法

TEXTJOIN的语法非常简单,只有三个参数:

=TEXTJOIN(分隔符, 忽略空值, 文本区域/文本数组)

分隔符(delimiter):合并后文本之间的分隔符号,可以是逗号、顿号、空格、换行符等,要用英文双引号括起来。

忽略空值(ignore_empty):TRUE表示忽略空单元格,FALSE表示空单元格也保留分隔符。一般我们都填TRUE。

文本区域(text1, text2, ...):要合并的文本,可以是单元格区域、数组,也可以直接写文本。最多支持252个文本参数。

💡 注意版本兼容性

TEXTJOIN是Excel 2019及以后版本、Office 365才有的函数。如果你用的是Excel 2016及更早版本,这个函数是用不了的,可以考虑升级或者用WPS(WPS也支持TEXTJOIN)。

2.2 基础用法:合并多个单元格文本

先来一个最简单的例子。假设A1:A3分别是「张三」、「李四」、「王五」,你想把它们合并成「张三,李四,王五」。

用&运算符的话,你得这么写:

=A1&"、"&A2&"、"&A3

看起来还行,但如果有10个单元格呢?你得写9个&和9个分隔符,非常繁琐,而且容易写错。

用TEXTJOIN就简单多了:

=TEXTJOIN("、", TRUE, A1:A3)

一行搞定。不管是3个单元格还是300个,写法都是一样的,只需要改一下区域范围就行。

分隔符可以根据需要随便换。想用逗号就写",",想用空格就写" ",想用换行符呢?可以用CHAR(10):

=TEXTJOIN(CHAR(10), TRUE, A1:A3)

这样合并出来的内容,每个名字占一行。记得把单元格设置为「自动换行」,否则换行符显示不出来。

2.3 进阶用法:智能忽略空值

TEXTJOIN第二个参数的真正威力,在有空值的时候才能体现出来。

假设A1是「苹果」,A2是空的,A3是「香蕉」。用CONCAT或者&的话,结果会是「苹果香蕉」——两个名字之间没有分隔符,因为A2是空的。但如果你写的是固定分隔符的公式,可能会出现「苹果、、香蕉」这种中间多出一个顿号的尴尬情况。

TEXTJOIN就不会有这个问题。当第二个参数设为TRUE时,它会自动跳过空单元格,确保分隔符不会重复出现:

=TEXTJOIN("、", TRUE, A1:A3) // 结果:苹果、香蕉

如果你把第二个参数设为FALSE,空单元格也会保留分隔符位置:

=TEXTJOIN("、", FALSE, A1:A3) // 结果:苹果、、香蕉

绝大多数场景下,我们都希望忽略空值,所以第二个参数一般填TRUE就对了。

💡 小技巧:灵活的分隔符

分隔符不只是单个字符,你可以用多个字符,比如"、「"、" - "、" | "等等。甚至可以用换行符和其他字符组合,做出结构化的文本输出。

2.4 高级用法:条件合并

TEXTJOIN最强大的地方,在于它可以和其他函数配合,实现「按条件合并」。

举个例子:你有一张销售明细表,A列是销售姓名,B列是销售额。你想把销售额大于10000的销售员名字合并到一个单元格里,用顿号隔开。

这时候可以用TEXTJOIN + IF的组合:

=TEXTJOIN("、", TRUE, IF(B1:B10>10000, A1:A10, ""))

这个公式的原理是:用IF函数判断B列的销售额,如果大于10000,就返回对应的姓名,否则返回空字符串。然后TEXTJOIN把所有非空的姓名用顿号连接起来。

如果你用的是Office 365或Excel 2021,这个公式直接回车就行。如果是旧版本,需要按Ctrl+Shift+Enter作为数组公式输入。

条件合并的应用场景非常多:按部门合并员工名单、按分类合并商品名称、按分数段合并学生姓名……只要是「满足某条件的内容合并到一起」的需求,都可以用这个套路。

三、TEXTSPLIT函数详解:按分隔符批量拆分

说完了「合」,再来说「分」。TEXTSPLIT是TEXTJOIN的逆操作——把一个单元格里的文本按分隔符拆分成多列或多行。

图2:TEXTSPLIT函数工作原理

3.1 函数语法

TEXTSPLIT的参数稍微多一点,但都很好理解:

=TEXTSPLIT(文本, 列分隔符, 行分隔符, 忽略空值, 匹配模式, 填充值)

文本(text):要拆分的原始文本,通常是一个单元格引用。

列分隔符(col_delimiter):按这个字符拆分成列,比如逗号、顿号、空格等。

行分隔符(row_delimiter):按这个字符拆分成行,可以和列分隔符同时使用。

忽略空值(ignore_empty):TRUE/FALSE,是否忽略空文本项,默认FALSE。

匹配模式(match_mode):0表示区分大小写,1表示不区分,默认0。

填充值(pad_with):当拆分后行列不对齐时,用什么值填充,默认#N/A。

💡 注意版本兼容性

TEXTSPLIT比TEXTJOIN更晚推出,只有Office 365和Excel 2022及以后的版本支持。WPS最新版本也已经支持。如果你的Excel版本不支持,可以考虑用「数据」选项卡中的「分列」功能作为替代,虽然不如函数灵活。

3.2 基础用法:按分隔符拆分

还是用最简单的例子。假设A1单元格内容是「张三、李四、王五」,你想把它们拆分成三列。

传统方法是用「数据」→「分列」,但分列是一次性操作,源数据变了得重新分。用TEXTSPLIT就不一样了,它是函数,源数据一变,结果自动更新:

=TEXTSPLIT(A1, "、")

输入这个公式后,Excel会自动把结果溢出到右边的单元格里——这就是Office 365的动态数组功能。不需要向右填充,一个公式搞定。

如果你的原始数据有多个分隔符呢?比如有时候用顿号,有时候用逗号,有时候用分号。TEXTSPLIT支持同时指定多个分隔符,用数组形式:

=TEXTSPLIT(A1, {"、",",",";"})

这样不管文本里用的是顿号、逗号还是分号,都能正确拆分。

3.3 多行多列拆分

TEXTSPLIT不止能拆分成列,还能同时拆分行和列,甚至直接把一段文本拆成一个二维表格。

比如A1里的内容是:「张三,100;李四,90;王五,85」,分号分隔不同的人,逗号分隔姓名和分数。你想把它拆成一个3行2列的表格。

只需要同时指定列分隔符和行分隔符:

=TEXTSPLIT(A1, ",", ";")

第二个参数是列分隔符(逗号),第三个参数是行分隔符(分号)。输入之后,会自动生成一个三行两列的表格,第一列是姓名,第二列是分数。

这个功能非常实用。很多系统导出的数据是用特殊符号分隔的文本,用TEXTSPLIT一行公式就能整理成规范的表格。

3.4 忽略空值和首尾分隔符

实际工作中,原始数据常常不规范——开头或结尾可能多了一个分隔符,中间可能有连续的分隔符导致空值。比如:「、苹果、香蕉、、橙子、」。

这时候,TEXTSPLIT的第四个参数就派上用场了。设置ignore_empty为TRUE,可以自动忽略拆分后产生的空文本项:

=TEXTSPLIT(A1, "、", , TRUE)

注意第三个参数(行分隔符)留空了,用逗号占位。第四个参数TRUE表示忽略空值。这样拆分出来就是苹果、香蕉、橙子三个结果,不会有空单元格,也不会因为首尾的分隔符多出空项。

这个功能在数据清洗的时候特别有用。很多时候你从系统导出或者别人发来的数据格式不规范,用TEXTSPLIT加忽略空值,一步就能把数据整理干净。

四、组合进阶:TEXTJOIN+TEXTSPLIT高级案例

TEXTJOIN和TEXTSPLIT单独用已经很厉害了,但真正的大招是把它们组合起来用。一个拆分,一个合并,中间配合其他函数做处理,可以实现非常复杂的文本操作。

图3:TEXTJOIN与TEXTSPLIT组合应用流程

4.1 案例一:拆分后重新排序合并

需求:A1里有「香蕉、苹果、橙子」,你想把这些水果名称按拼音首字母排序后,再用顿号合并起来。

思路:先用TEXTSPLIT拆分成数组,然后用SORT函数排序,最后用TEXTJOIN合并回去:

=TEXTJOIN("、", TRUE, SORT(TEXTSPLIT(A1, "、")))

这就是函数组合的魅力——每个函数只做一件事,但组合起来就能解决复杂问题。拆分→排序→重新合并,一行公式搞定。

类似的思路可以衍生出很多用法:

拆分后去重:TEXTJOIN + UNIQUE + TEXTSPLIT

拆分后筛选:TEXTJOIN + FILTER + TEXTSPLIT

拆分后计数:COUNTA + TEXTSPLIT

核心思路都是一样的:先拆成数组,用数组函数处理,最后再合并回去。

4.2 案例二:提取关键词并去重

需求:A列是一堆文章标题,每个标题里有多个关键词标签,用逗号分隔。你想把所有标题里的关键词提取出来,去重后形成一个完整的关键词列表。

这个需求如果用传统方法,得先分列、再转置、再去重,折腾半天。用TEXTJOIN+TEXTSPLIT+UNIQUE的组合,一行搞定:

=UNIQUE(TEXTSPLIT(TEXTJOIN(",", TRUE, A1:A100), ","))

我们从内向外拆解一下这个公式:

最内层TEXTJOIN把A1到A100所有单元格的内容用逗号合并起来,变成一长串文本。然后TEXTSPLIT把这一长串文本按逗号拆分成一个纵向的关键词数组。最后UNIQUE对数组去重,得到唯一的关键词列表。

三步走,一行公式,是不是很优雅?

而且这是动态数组公式,结果会自动溢出。你新增了标题数据,公式结果会自动更新,不需要重新操作。

4.3 案例三:数据清洗——拆分+合并联动

需求:你有一列数据,内容是「姓名-部门-职位-工号」,但有些行多了字段,有些行少了字段,格式不统一。你想提取出每行中的部门和职位,重新合并成「部门-职位」的格式。

思路:先用TEXTSPLIT按「-」拆分成多列,然后从中找到部门和职位所在的列,再用TEXTJOIN合并。不过这个方法比较复杂,我们可以用更灵活的方式。

假设部门总是包含「部」字,职位总是包含「师」或「员」字。可以这样写:

=LET(

arr, TEXTSPLIT(A1, "-"),

dept, FILTER(arr, ISNUMBER(SEARCH("部", arr)), ""),

pos, FILTER(arr, ISNUMBER(SEARCH({"师","员"}, arr)), ""),

TEXTJOIN("-", TRUE, dept, pos)

)

这个公式稍微复杂一点,用到了LET函数来定义中间变量(这样公式更清晰,不用重复写TEXTSPLIT)。思路是:

先把A1按「-」拆分成数组arr

用FILTER+SEARCH从数组中筛选出包含「部」字的元素作为部门

用FILTER+SEARCH从数组中筛选出包含「师」或「员」的元素作为职位

最后用TEXTJOIN把部门和职位用「-」连接起来

这个案例展示了TEXTJOIN和TEXTSPLIT在数据清洗场景下的强大能力。面对不规范的原始数据,你可以先拆分,再筛选、判断、处理,最后重新合并成规范的格式。

五、和其他文本函数比,强在哪?

Excel里的文本函数不少,TEXTJOIN和TEXTSPLIT为什么特别值得学?我们和其他几个常用的文本函数做个对比。

5.1 TEXTJOIN vs CONCAT vs &

&(连字符):最基础的连接方式,每个值都要写一次&,分隔符也要手动加。适合少量文本连接,多了就非常麻烦,而且不能忽略空值。

CONCAT/PHONETIC:比&好一点,可以直接连接区域,但还是不支持自定义分隔符,也不能忽略空值。合并出来的文本是挤在一起的。

TEXTJOIN:支持自定义分隔符、支持忽略空值、支持数组和区域。是三个里面最灵活、最强大的,也是目前最推荐的文本合并方式。

5.2 TEXTSPLIT vs LEFT/RIGHT/MID/FIND

LEFT/RIGHT/MID:固定长度提取文本的「三剑客」,适合文本长度固定的场景。但如果文本长度和位置不固定,就得配合FIND/SEARCH来定位分隔符的位置,公式会写得很长很复杂。

FIND/SEARCH:用来找分隔符的位置,本身不能拆分,需要和LEFT/MID/RIGHT配合。一个分隔符还好,多个分隔符的话公式会嵌套得非常深,可读性极差。

TEXTSPLIT:一步到位,直接按分隔符拆分,支持多个分隔符,支持同时拆分行和列,支持忽略空值。代码简洁,可读性高,是处理不规范文本的利器。

5.3 什么场景用什么函数?

最后给大家一个选择指南:

简单的两三个文本连接:用&就够了,没必要写函数

多个单元格批量合并:用TEXTJOIN,效率最高

固定长度提取文本:用LEFT/RIGHT/MID,简单直接

按分隔符拆分文本:用TEXTSPLIT,一步到位

复杂的文本处理:TEXTJOIN + TEXTSPLIT + 数组函数组合使用

六、常见问题与注意事项

最后说几个大家经常遇到的问题和使用中的注意事项。

Q1:我的Excel没有TEXTJOIN/TEXTSPLIT怎么办?

如果你用的是比较老的Excel版本(2016及以前),确实没有这两个函数。有几个解决方案:

升级到Office 365或Excel 2021/2022,一劳永逸

使用WPS,最新版WPS已经支持这两个函数,而且免费

用「分列」功能代替TEXTSPLIT(但不是动态的)

用&或CONCAT代替TEXTJOIN(但不能自动忽略空值)

Q2:TEXTSPLIT结果溢出了,会不会覆盖右边的数据?

会的。动态数组的溢出功能很方便,但也要注意留出足够的空间。如果TEXTSPLIT拆分结果右边的单元格有内容,Excel会显示#SPILL!错误。

解决方法很简单:把右边的数据移走,或者在不会有冲突的地方输入公式。

Q3:TEXTJOIN有字数限制吗?

有的。Excel单元格最多能容纳32767个字符,TEXTJOIN合并出来的结果如果超过这个长度,也会报错。不过一般场景下很难触碰到这个限制,只有在合并极大量文本的时候才需要注意。

Q4:怎么按换行符拆分?

单元格里的换行符是CHAR(10)。所以按换行拆分的公式是:

=TEXTSPLIT(A1, CHAR(10))

同理,按Tab键拆分用CHAR(9)。

Q5:两个函数组合使用,嵌套太多看不懂怎么办?

推荐配合LET函数使用。LET函数可以给中间结果起名字,公式的可读性会大大提高。比如:

=LET(

parts, TEXTSPLIT(A1, ","),

unique_parts, UNIQUE(parts),

sorted_parts, SORT(unique_parts),

TEXTJOIN(",", TRUE, sorted_parts)

)

这样每一步做了什么都清清楚楚,调试和修改也很方便。

七、写在最后

TEXTJOIN和TEXTSPLIT这对「黄金搭档」,可以说是Excel文本处理领域最实用的函数组合之一。学会了它们,你处理文本数据的效率会有质的飞跃。

不过,函数只是工具,真正重要的是解决问题的思路。遇到复杂的文本处理需求时,不妨先想一想:能不能拆成数组?能不能用数组函数处理?最后再合并回去?很多看似复杂的问题,用「拆分→处理→合并」这个三板斧就能解决。

建议大家打开Excel,跟着文章里的例子动手练一遍。看十遍不如做一遍,亲手敲过公式,才是真正学会了。

— END —

作者:沈未迟
来源说明:本文首发于微信公众号「效率小本本」,经整理优化后发布于 DevToolHub。

沈未迟 · 独立开发者
DevToolHub 站长,专注于在线工具开发与效率提升。联系邮箱:[email protected]