首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

结果合并到一个单元格,三种方法随你挑

小伙伴们好啊,今天和大家分享关于合并同类项的内容。

如下图,需要把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或是2019,可以试试另外一种高大上的方法:首先添加数据模型:

接下来添加度量值:使用的公式为:=CONCATENATEX('表1','表1'[姓名],"、")即:=CONCATENATEX(要处理的数据表名,数据表的字段名,间隔符号)

最后插入数据透视表:

TEXTJOIN如果你使用的是2019版本或是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函数得到的内存数组进行合并,并且使用顿号“、”作为不同姓名之间的间隔。

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190826A0JEKM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券