打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA简单入门42:字典合并所有内容在一个单元格内


要求:将英雄对应的所有内容都合并在一个单元格内显示。

参考代码:

代码解释:以程咬金为例子。

第1个程咬金的时候,因为字典里没有程咬金这个关键字(exists方法检测),所以将其第1条数据放进字典,此时: d('程咬金')='坦克';

第2个程咬金的时候,exists方法检测到程咬金在字典里。此时,读取程咬金的item:d('程咬金'),为 '坦克',并将'坦克'和此时的'肉盾'用逗号合并起来:'坦克,肉盾',

也就是执行此语句 d(arr(i, 1)) = d(arr(i, 1)) & ',' & arr(i, 2),右边的d(arr(i, 1))为第1条数据的item '坦克';arr(i, 2)为'肉盾';

左边的d(arr(i, 1))将新的item:d(arr(i, 1)) & ',' & arr(i, 2)放到字典里。此时关键字'程咬金'对应的item为'坦克,肉盾'。

第3个程咬金同样操作。

上述代码,有一个疏忽的地方就是,没有对合并的数据去重复。比如,小乔,对应的两个内容都是法师,应该去重复处理。参考代码:

使用instr函数,从每个关键字的第2条数据开始检查item是否已经包含了所要合并的内容。

如小乔,第1条数据时,item为'法师',第2条数据时,d('小乔')返回其item'法师',

instr(d('小乔'),'法师') -->instr('法师','法师'),显然包含了'法师'这个字符,返回的结果>0;如果不包含'法师',则返回的结果=0;

instr函数相当于工作表函数find,返回查找的字符串在另一个字符串中的位置。

如程咬金,第2条数据的时候item为'坦克,肉盾',当遍历到第3条数据时

instr(d('程咬金'),'消耗')--->instr('坦克,肉盾','消耗'),'坦克,肉盾'这个字符串不包含'消耗'这个字符串,则返回0.


我们知道,excel2016或365都有textjoin这个函数。

利用上面的知识,我们也可以写一个自定义函数。

使用方法:txtjoin(参数1,参数2,参数3,参数4)

1、参数1:条件,为一个单元格;

2、参数2:条件所在的单元格区域;

3、参数3:合并内容所在的单元格区域;

参数2和参数3的单元格区域,必须大小一致。

4、参数4:合并内容的分隔符号;

5、如果参数2的单元格区域有空格,则默认将空格按其上面的非空处理,如图中的A7空格,其条件是程咬金;

6、如果条件(关键字不在字典中)不存在,则返回空白;

7、对合并的内容执行去重复处理。

文件链接如下:

链接: https://pan.baidu.com/s/1Bbt3RW2U3oibvomU3GOeKA 密码: uw76


点击扩展链接或下拉链接查看上一篇文章:

VBA简单入门41:删除字典里的数据

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【Excel VBA】用字典查询并合并符合条件的多个结果
VBA常用小代码306:查询合并符合条件的多个结果
VBA简单入门45:将单元格、数组放进字典,拆分工作表
excel如何导出符合条件的全部单元格内容到一个单元格内?
用VBA代码实现多条件筛选
来自【Excel完美论坛】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服