合并同类项,按部门合并姓名,并用顿号隔开
懒人办公
创作者俱乐部成员
上期我们讲了【按分隔符拆分数据】,有小伙伴问能不能进行反向操作——合并同类项。话不多说,直接上案例。
⭐【案例】
如下图,一个部门对应多个姓名,要求按部门将姓名合并到一起,姓名之间用顿号(、)隔开,即从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单元格区域
}
⭐【往期内容】
⭐【课后练习】
请用一个数组公式解决此问题,并将结果写在评论区。
⭐【素材下载】
https://kdocs.cn/l/cjGBJnOJGGe0
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员