打开APP
userphoto
未登录

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

开通VIP
字典实例应用一(求首次和末次)


案例如下:



上图中有客户和拜访时间,现在要提取每个客户的首次拜访时间和末次拜访时间。


如果直接用函数做,我们可以先把姓名列用删除重复项获得不重复的姓名,求首次拜访时间用Vlookup,求末次拜访时间用Lookup。


我们学习了字典后可以用字典技术实现这个目的,理解起来也很简单。


一、求首次:


把A、B两列的姓名和拜访时间先写入数组arr,然后把数组中的每个元素写入字典,因为字典不允许有重复的key,所以当遇到重复的姓名时,直接跳过,继续写入下一条,这样得到的字典中的项目对就是我们想要的结果。这里其实用到的就是前面章节讲的字典写入技巧中第一种方法,不明白的可以返回去好好学习下。


具体代码如下:

Sub 求首次()

Dim d As Object, arr, i%

On Error Resume Next

Set d = CreateObject('scripting.dictionary')

arr = Range('A2', [b2].End(xlDown))

For i = 1 To UBound(arr)

d.Add arr(i, 1), arr(i, 2)

Next

[d2].Resize(d.Count, 1) = Application.Transpose(d.keys)

[e2].Resize(d.Count, 1) = Application.Transpose(d.items)

End Sub


2、求末次:


这里用到的是字典写入技巧中第二种办法,修改key对应的item值,如果字典中存在该key,那就直接修改,这样就可以得到某姓名最后一次出现时对应的时间,没有该key的就直接加进去。


代码如下:

Sub 求末次()

Dim d As Object, arr, i%

Set d = CreateObject('scripting.dictionary')

arr = Range('A2', [b2].End(xlDown))

For i = 1 To UBound(arr)

d(arr(i, 1)) = arr(i, 2)

Next

[g2].Resize(d.Count, 1) = Application.Transpose(d.keys)

[h2].Resize(d.Count, 1) = Application.Transpose(d.items)

End Sub


看来是万变不离其宗!所以基础一定要理解透才能融汇贯通!


今天的分享就到这里了!


想更深入的学习视频教程,请进入公众号后台菜单中了解详情!


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA字典查找、求和、去重
excl 利用字典和数组分类求和
(19)字典Dictionary
VBA进阶|在VBA中使用字典进行数据统计与查询
常见字典用法集锦及代码详解(全)_蓝桥玄霜
字典用法集锦
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服