同学们们好啊,今天江门office培训老师和大家分享关于合并同类项的内容。
如下图,需要把AB列的数据,按照不同的部门汇总出对应的人员名单。
江门office培训,江门办公软件培训
自定义函数:
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 2019或是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函数得到的内存数组进行合并,并且使用顿号“、”作为不同姓名之间的间隔。