Excel——TEXTJOIN函数实现某一列值相等时合并其他列

本文介绍了Excel函数TEXTJOIN的基本用法,用于合并文本并忽略空值,以及如何通过IF函数实现多对多查询,强调了IF函数的应用和WPS中数组公式的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、TEXTJOIN函数介绍

公式=TEXTJOIN(分隔符, 忽略空白单元格, 字符串1…)

分隔符:文本字符串,或者为空,或用双引号引起来的一个或多个字符,或对有效文本字符串的引用。如果提供一个数字,则将被视为文本。

忽略空白单元格:如果为 TRUE,则忽略空白单元格,如果是False,则不忽略空值。

字符串1…:为 1 到 253 个要联接的文本项。这些文本项可以是文本字符串或字符串数组,如单元格区域。

其实TEXTJOIN函数用法比较简单,比如下图要把两个城市名称连到一块并且用逗号隔开

只需使用公式:=TEXTJOIN(",",TRUE,E6:F6)

第一参数是连接符逗号,第二参数一般都【TRUE】表示忽略空值,第三参数就是需要链接的数据区域,就是这么简单。

二、TEXTJOIN函数高级用法-多对多查询

大家对TEXTJOIN函数第一印象应该是觉得是强大的合并文本函数,其实我们可以借助IF函数,实现开头提到的多对多查询功能。

想要实现开头提到的功能,我们需要借助IF函数,先使用IF函数在左侧表格中找到【业务部、运营部、财务部】对应的所有员工名称,然后将其放在TEXTJOIN的第三参数中即可,用TEXTJOIN函数通过逗号把这些员工名称连接起来即可。

公式:=TEXTJOIN(",",TRUE,IF(A2:$A$10=D2,B2:$B$10,""))

其实,这个公式的关键就是IF函数,通过IF函数判断所属部门,如果条件成立就返回对应的员工名称,如果条件不成立就返回空值

IF公式:IF(A2:$A$10=D2,B2:$B$10,"")

特别注意事项:

1、IF函数中的判断条件和返回真值引用的单元格都是要决定引用,就是选择单元格后按一次F4键。

2、在WPS中输入公式后,一定要按Ctrl+Shift+回车键才可以,如果只按回车键会返回所有的员工名称。我们可以看到这个公式跟以往的公式有所不同,公式外面有{},这个可不是手工写的,而是输入公式后,按Ctrl+Shift+Enter三个组合键结束,这就是传说中的数组公式。

### 使用公式或VBA在Excel中根据条件合并多个纵向单元格的文本内容 #### 方法一:使用TEXTJOIN函数与IF函数组合实现基于条件的文本合并 当需要依据特定条件来决定哪些单元格的内容应该被合并,可以利用`TEXTJOIN`和`IF`这两个函数相结合的方式。此方法适用于Excel版本支持`TEXTJOIN`的情况。 假设数据位于A,而对应的条件则放置于B;目标是在C1处显示满足特定条件下所有匹配项的结果字符串。具体操作如下: ```excel =TEXTJOIN(", ", TRUE, IF(B:B="指定条件", A:A, "")) ``` 上述公式的逻辑在于先通过`IF`判断每一行是否符合条件,对于符合条件者保留其原始,反之返回空字符;随后借助`TEXTJOIN`将这些筛选后的结果连接起来形成最终输出,并以逗号加空格作为分隔符[^1]。 #### 方法二:采用自定义VBA宏程序完成更复杂的条件化合并任务 对于更加复杂的需求场景——比如不仅限于简单的相等情况判定而是涉及多层嵌套逻辑或是动态调整范围边界等情形下,则编写一段专门针对该需求定制化的VBA脚本可能是更好的解决方案之一。 下面给出了一段基础版的VBA代码片段用于示范如何遍历选定区域内各行并按照给定标准收集相应记录再拼接成单一字符串输出至预设位置: ```vba Sub MergeTextBasedOnCondition() Dim ws As Worksheet Set ws = ActiveSheet ' 定义变量存储起始行坐标以及终止行数 Dim startRow As Long, endRow As Long, colIndex As Integer startRow = 2 ' 假设从第二行开始读取有效数据 endRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row colIndex = 1 ' 对应"A"索引编号 ' 初始化一个空数组用来装载符合要求的文字串 Dim resultArray() As String ReDim Preserve resultArray(0 To 0) For i = startRow To endRow If ws.Cells(i, colIndex + 1).Value = "设定的具体条件" Then ReDim Preserve resultArray(LBound(resultArray) To UBound(resultArray) + 1) resultArray(UBound(resultArray)) = ws.Cells(i, colIndex).Value End If Next i ' 将获取到的所有条目用逗号间隔开后一次性写入目的单元格内 ws.Range("D1").Value = Join(resultArray, ", ") End Sub ``` 这段VBA代码实现了对工作表中某两间关系进行分析处理的功能,即每当右侧相邻单元格内的数等于预先设置好的某个固定标志位便把左侧对应的那个字段加入到最后要呈现出来的汇总表里去。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技颠覆未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值