打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
结果合并到一个单元格,三种方法够不够?

如下图,需要把AB列的数据,按照不同的部门汇总出对应的人员名单。

先来看第一种方法:

自定义函数

ExcelHome论坛的chenjun版主,很多年前写了一个关于合并同类项的自定义函数,功能强大,使用简单:

这里粘贴的代码为:

PubliC FunCtion Contxt(ParamArray args() As Variant) As Variant

Dim tmptext As Variant, i As Variant, Cellv As Variant

Dim Cell As Range

tmptext = ''

For i = 0 To UBound(args)

   If Not IsMissing(args(i)) Then

       SeleCt Case TypeName(args(i))

           Case 'Range'

               For EaCh Cell In args(i)

                   tmptext = tmptext & Cell

               Next Cell

           Case 'Variant()'

               For EaCh Cellv In args(i)

                   tmptext = tmptext & Cellv

               Next Cellv

           Case Else

               tmptext = tmptext & args(i)

       End SeleCt

   End If

Next i

ConTxt = tmptext

End FunCtion

当然,这些代码我们初级用户只要会用就可以,不需要全部记住哈。

然后就可以使用自定义的函数了:

=Contxt(IF($B$2:$B$40=D2,A$2:A$40&' ',''))

本例是数组公式,记住公式编辑完之后,要按Shift+ctrl+回车。

提醒一下,使用了代码的工作簿要保存为xlsm格式,否则下次不能用了。


Power Pivot

如果你使用的是Excel 2016,可以试试另外一种高大上的方法:

首先添加数据模型:

接下来添加度量值:

使用的公式为:

=CONCATENATEX('表1','表1'[姓名],'、')

即:

=CONCATENATEX(要处理的数据表名,数据表的字段名,间隔符号)


最后插入数据透视表:


TEXTJOIN

如果你使用的是Office 365,这一切就变得非常简单了:

输入以下公式,按Shift+ctrl+回车 ,然后向下复制公式即可:

=TEXTJOIN('、',1,IF($B$2:$B$40=D2,A$2:A$40,''))


TEXTJOIN函数的用法为:

=TEXTJOIN(间隔字符,是否忽略空单元格,要合并的内容)

公式中要合并的内容为: 

IF($B$2:$B$40=D2,A$2:A$40,'')

也就是如果$B$2:$B$40等于D2,就返回A$2:A$40对应的内容,否则返回空文本''。

TEXTJOIN函数对IF函数得到的内存数组进行合并,并且使用顿号“、”作为不同姓名之间的间隔。


三种方法,各有特点,你更喜欢哪一种呢?

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Contxt,自定义函数很神奇
EXCEL自定义字符连接函数可接受内存数组及各类型混合参数
Excel小教程三十六:给你一个升级excel2016版本的理由!
Excel辅助列系列:没TEXTJOIN也能一个单元格内合并相同条件内容
Excel教程:excel文本合并,TEXTJOIN函数超好用~~
Excel技巧连载13和14:textjoin函数,最快的文本合并神器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服