伙计们真好。 今天我总是希望和大家分享关于同类项合并的内容。
如下图所示,需要将AB列的数据按部门整理成对应的人员名单。
让我们先来看看第一种方法:
自定义函数
ExcelHome论坛的陈俊君神勇树叶,多年前写了一个合并同类项的自定义函数。 强大、易用:
贴在这里的代码如下。
publicfunction contxt (paramarrayargs ) as variant as variant
Dim tmptext As Variant,i As Variant,Cellv As Variant
Dim Cell As Range
tmptext=' '
forI=0toubound(args ) ) ) ) ) )。
ifnotismissing(args ) I ) ) Then
Selectcasetypename(args(I ) ) ) ) ) ) )。
Case 'Range '
foreachcellinArgs(I ) )。
tmptext=tmptext Cell
下一个小区
Case 'Variant ' )
foreachcellvinargs(I ) )。
tmptext=tmptext Cellv
下一个中央电视台
Case Else
tptext=tmptextargs(I ) ) )
最终选择
End If
下一步
ConTxt=tmptext
最终函数
当然,这些代码只要我们初级用户能用就行了。 你不需要全部记住。
然后,可以使用自定义函数。
=contxt(if ) $b$2:$b$40=D2,A$2:A$40 ','')
这个例子是数组表达式。 编辑完公式后,按Shift ctrl键返回汽车。
请注意。 使用代码的工作簿请以xlsm格式保存。 否则,下次不能使用。
Power Pivot
如果使用的是Excel 2016,请尝试其他较高的方法:
首先添加数据模型。
然后添加度量值。
的表达式。
=CONCATENATEX ('表1 ','表1'[姓名],',') )
也就是说:
=CONCATENATEX (要处理的数据表名称、数据表字段名称、分隔符) )。
最后插入数据透视表:
文本连接
如果你使用的是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函数得到的内存数组,并使用吨符号“,”作为不同名称之间的间隔。
三种方法各有特点。 你喜欢哪个?