跳至内容
Excel

Excel TEXTJOIN():在 Excel 中合并文本

使用 TEXTJOIN() 流畅合并单元格内容。灵活处理分隔符、跳过空白,简化您在 Excel 中的数据拼接工作。
Josef Waples's photo
Josef Waples
已更新 · 6分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。

从 Excel 数据生成格式良好的文本是常见需求,但把数值一个个拼接起来往往会变得凌乱。Excel 的 TEXTJOIN() 函数提供了直接明了的解决方案,允许您使用分隔符合并成片的文本,甚至可以跳过空单元格。

本文将带您了解 TEXTJOIN() 的基础,看看它与 CONCAT() 和 CONCATENATE() 等类似函数的差异,并通过实用场景展示它的优势。在此过程中,我会为 TEXTJOIN() 站台,因为我认为它如今已是合并文本的更优工具,我也相信看完文章您会赞同这一点。

Excel TEXTJOIN() 的工作原理

先弄清楚 TEXTJOIN() 到底做什么,以及为什么它的语法比以往灵活得多。

核心上,TEXTJOIN() 可将多个单元格的文本值连接起来,并在其间插入一个分隔符(如逗号、空格或分号)。与旧方法不同,它能一次处理整个区域,而且您可以决定是否忽略空白。

其语法如下:

=TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)
  • delimiter:您希望在每段文本之间放置的字符(通常为逗号、空格等)

  • ignore_empty:为 TRUE 时跳过空白单元格,为 FALSE 时包含空白

  • text1, [text2], …:要合并的单元格、区域或值

例如,假设您在 A1、A2 和 A3 中有值。您想用逗号分隔并跳过空白:

=TEXTJOIN(",", TRUE, A1:C1)

跳过空白时的 Excel TEXTJOIN

如果 A2 为空,您将只得到 A1 和 A3 的值,并以逗号分隔。

这为什么重要?其他函数(我指的是 CONCATENATE())需要您逐个列出单元格,而且不会跳过空白。TEXTJOIN() 更省力、更易维护。

TEXTJOIN() vs. CONCATENATE() vs. CONCAT()

既然已了解 TEXTJOIN() 的基础,也值得直接与旧的文本函数对比。如果您用过 CONCATENATE() 或 CONCAT(),可能会想为什么要切换。

  • TEXTJOIN():可指定分隔符并轻松跳过空白。接受区域。

  • CONCAT():可连接区域或单个文本单元格,但无法指定分隔符,也不会跳过空白。

  • CONCATENATE():最古老的选项。必须逐个指定单元格。无分隔符参数,不支持区域。

例如,让我们用分号连接 B1、B2 和 B3 的值。不同函数如下所示:

=TEXTJOIN(";", TRUE, A1:C1)

使用分号的 Excel TEXTJOIN

=CONCAT(B1:D1)

Excel TEXTJOIN 与 CONCAT 对比

=CONCATENATE(B1, C1, D1)

Excel TEXTJOIN 与 CONCATENATE 对比

请注意,只有 TEXTJOIN() 可直接选择分隔符而无需额外处理。使用 CONCAT() 或 CONCATENATE(),如果需要分隔符,您必须手动添加:

=B1 & ";" & C1 & ";" & D1

手动添加分隔符

此外,并且同样重要的是,根据数据结构不同,如果某个单元格为空,TEXTJOIN() 可以为您跳过它。CONCATENATE() 和 CONCAT() 则会把空白也算进去。

处理分隔符与空白单元格

让我再多谈谈这两个常见痛点:添加一致的分隔符,以及忽略空白单元格。

自定义分隔符

在不同场景下您可能需要不同的分隔符。您可能会用逗号、竖线、换行,甚至其他字符作为分隔。

若要使用竖线连接,使用如下公式:

=TEXTJOIN("|", TRUE, D1:G1)

使用竖线的 Excel TEXTJOIN

您也可以做更小众的处理。这里,我使用了“空格-连字符-空格”作为分隔符:

=TEXTJOIN(" - ", TRUE, D1:G1)

使用连字符的 Excel TEXTJOIN

您甚至可以使用 CHAR(10) 来实现换行,不过需要在单元格格式中打开自动换行(Wrap Text)才能看到效果。

跳过空白

数据拼接中最令人头疼的事情之一就是处理空白。TEXTJOIN() 让您掌控此事。将 ignore_empty 参数设为 TRUE,空白将被完全忽略。

=TEXTJOIN(", ", TRUE, E1:G1)

Excel TEXTJOIN 跳过空白

结果:“Red, Blue”。空单元格(F2)被忽略,因此不会出现多余的逗号。

如果将 ignore_empty 设为 FALSE:

=TEXTJOIN(", ", FALSE, E1:G1)

Excel TEXTJOIN 忘记跳过空白

现在结果是:“Red, , Blue”。那个多余的逗号很显眼(通常不是您想要的)。以我的经验,TRUE 通常更合适。

这些看似细微的差别,如果您多练习这个函数,能省下不少后期清理的时间。

构建动态列表与标签

了解了基础后,让我们看看 TEXTJOIN() 如何解决问题。我将聚焦两个您可能会遇到的场景:创建动态汇总和从可变数据组装标签。

基于用户输入创建汇总

假设您在收集一组可选问题的问卷反馈,用户以 Yes/No 作答。只有部分问题会被回答,因此结果分散在 F1 到 J1。

如果您只想列出回答了“Yes”的问题,可以将 TEXTJOIN() 与 IF() 和 FILTER()(在新版 Excel 中的动态数组)结合使用。

假设 G1:G5 存放问题文本,F1:F5 存放对应的 Yes/No:

=TEXTJOIN(", ", TRUE, FILTER(F2:J2, F1:J1="Yes"))

Excel TEXTJOIN 与 FILTER 组合

现在,您的输出单元格只会列出用户回答“Yes”的问题,并以逗号分隔。

如果您没有动态数组功能,可以建立一个辅助列:仅当答案为 Yes 时输出问题文本,然后再用 TEXTJOIN() 连接该辅助区域。

从可变数据构建自定义标签

设想您要从一张表中生成邮寄标签,而其中某些字段(如“Apartment”或“Suite”)有时为空。您希望将地址组件合并为单行。

如果地址位于 H1(“123 Main St”)、H2(“Apt 4B”或空)、H3(“Springfield”)、H4(“IL”)、H5(“62704”),您可以这样写:

=TEXTJOIN(", ", TRUE, H1:L1)

Excel TEXTJOIN 灵活处理空白单元格

如果 H2 为空,输出依然整洁(不会出现双逗号!),因为 TEXTJOIN() 会跳过空单元格。

这些是常见示例,但同样的逻辑适用于任何需要按条件合并可选字段的数据。

其他需要注意的事项

尽管 TEXTJOIN() 很方便,仍有一些小点需要注意:

在 TEXTJOIN() 中使用多个区域

关于 TEXTJOIN() 如何处理多个区域,有一点需要了解。即使区域彼此不相邻,您可以传入多个区域,只要分别列出它们即可:

=TEXTJOIN(", ", TRUE, B1:D1, B2:D2)

Excel TEXTJOIN 与非连续区域

这样完全可行。Excel 会合并两个区域的值并将其连接。只要记住:您不能把它们写成一个数组如 (A1:A3,C1:C3)。需要将每个区域作为独立参数列出。

嵌套函数与动态数组

如果您在动态数组公式中使用 TEXTJOIN()(如搭配 UNIQUE() 或 FILTER()),请记住分隔符与 ignore_empty 参数仍应为单一值。在这些位置使用数组将返回 #VALUE! 错误。

分隔符与最终格式

有时,您不需要分隔符(只想把文本直接拼在一起)。将分隔符设为 ""(即空字符串):

=TEXTJOIN("", TRUE, A1:C1)

不使用分隔符的 Excel TEXTJOIN

但请注意:如果不使用分隔符,您就丧失了它相较 CONCAT() 的主要优势。

如果您要创建供 Excel 外部使用的列表(如 CSV 上传),请留意多余空格、意外换行或字符编码问题(尤其在使用符号或 Unicode 时)。

相关函数与进阶技巧

当您熟悉 TEXTJOIN() 后,可能会想它与其他“动态”Excel 函数如何配合。通常,将其与 UNIQUE()、FILTER() 或 SORT() 结合会更强大。

例如,假设您想把列表中所有唯一的产品类别连接起来:

=TEXTJOIN(", ", TRUE, UNIQUE(TRANSPOSE(A1:E1)))

注意:UNIQUE() 在 Excel 中默认面向列。因为我在处理行,需要同时使用 TRANSPOSE()。

或者,您只想要满足某个条件的值:

=TEXTJOIN(", ", TRUE, FILTER(A1:C1, A2:C2="Active"))

这两个示例展示了 TEXTJOIN() 如何在无需辅助列或手动筛选的情况下进行数据汇总或报告。

结语

如果您仍在使用 CONCATENATE() 或手动拼接单元格,切换到 TEXTJOIN() 将为您节省时间。(我保证!)

另外,我想补充一点,学习 TEXTJOIN() 会让您习惯用“区域”的思维。这种思维在使用 Excel 的动态数组函数及其他更现代的方法时会大有裨益。继续学习可参加我们的 Advanced Excel Functions 课程。


Josef Waples's photo
Author
Josef Waples

我是数据科学编辑,曾为科学期刊发表的研究论文撰稿。我的兴趣领域包括线性代数、统计学、R 等相关主题。

主题
Excel

跟 DataCamp 学习 Excel

课程

Excel 入门

4 小时
276.8K
掌握 Excel 基础,学会使用这款电子表格工具开展有影响力的分析。
查看详情开始课程

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。
查看更多