合并同类项,按部门合并姓名,并用顿号隔开

懒人办公
懒人办公

创作者俱乐部成员

上期我们讲了【按分隔符拆分数据】,有小伙伴问能不能进行反向操作——合并同类项。话不多说,直接上案例。

【案例】

如下图,一个部门对应多个姓名,要求按部门将姓名合并到一起,姓名之间用顿号(、)隔开,即从AB列转换为DE列的形式。

【操作效果】

【JSA代码】

按ALT+F11打开WPS宏编辑器,复制下方代码粘贴到编辑器中。

function 合并同类项(){

dic={} //定义一个字典对象dic,用于去重部门、合并姓名

n = Range("a"+Rows.Count).End(3).Row //获取A列最后一行数据行号

for(i = 2;i<=n;i++){ //从第2行循环到最后一行

t=Cells.Item(i,'a').Value2 //将部门赋值给变量t

v=Cells.Item(i,'b').Value2 //将姓名赋值给变量v

/* 将部门作为键、姓名作为值,写入字典dic,利用字典键

不重复特性,对部门去重,同时用顿号将姓名连接到一起

*/

dic[t] ? dic[t]=dic[t]+'、'+v : dic[t]=v

}

let ar = Object.entries(dic); //将字典写入二维数组ar

Range('D2').Resize(ar.length,2).Value2=ar //将数组ar写入D2单元格区域

}

【往期内容】

1.对明细数据分类汇总,统计库存

2.两表按关键字相互链接,快速查找定位

3.批量创建和删除工作表

4.批量将工作表拆分为独立工作簿

5.批量将工作簿合并为工作表,免费实现会员功能

6.实时查询数据,高端的效果,往往只需要简单的代码

7.按照内容拆分工作表,免费实现会员功能

8.批量合并工作簿,免费实现终极会员功能

9.自动核对报表报送情况,表姐表妹的福音来了

10.以指定单元格内容批量命名表格文件

11.用工作表做数据库,将出库单保存为出库明细

12.用AI拆分工作表,一句话就能搞定

13.在表格中按名称批量插入对应图片

14.按分隔符拆分数据

【课后练习】

请用一个数组公式解决此问题,并将结果写在评论区。

【素材下载】

https://kdocs.cn/l/cjGBJnOJGGe0

贵州省
浏览 2397
2
14
分享
14 +1
16
2 +1
全部评论 16
 
小可耐
function hb(){ var sh=ThisWorkbook.Sheets("总表"); var arr =sh.Range("a1").CurrentRegion.Value(); var m=new Map(); arr.forEach(([dep,name])=>m.set(dep, m.has(dep)?`${m.get(dep)}、${name}`:name)) sh.Range("e:f").Clear(); sh.Range("e1").Resize(m.size,2).Value2=[...m.entries()] }
· 湖北省
回复
 
WPS_1700046217
感谢老师
· 广东省
回复
 
Ltt
内容详细,非常好👍
· 湖南省
回复
 
刘洋
内容详细,有用,赞
· 中国
回复
 
爺/权傾天丅
感谢!受益匪浅!!!
· 河南省
回复
 
悠扬的旋律
字典
· 浙江省
回复
 
快乐的塔塔
快乐的塔塔

创作者俱乐部成员

=CONCAT(FILTER(B2:B9,A2:A9=G2))
· 广东省
回复
懒人办公
懒人办公

创作者俱乐部成员

还差一点点,要用顿号隔开呢
· 贵州省
回复
 
懒人办公
懒人办公

创作者俱乐部成员

这个问题用公式也很容易解决的,大家在文末下载素材试试吧,记得把结果写在评论区
· 贵州省
回复
 
ice y
ice y

创作者俱乐部成员

感谢,又学到了
· 四川省
回复
懒人办公
懒人办公

创作者俱乐部成员

共同学习
· 贵州省
回复