字典含有重复的key不覆盖_EXCEL字典实例应用一(求首次和末次)

这篇博客介绍了如何使用字典功能在Excel中提取每个客户的首次和末次拜访时间。通过创建字典,避免重复键值,首次拜访时间利用字典的唯一性直接获取,末次拜访时间则更新字典中key对应的item值来实现。这种方法展示了字典在实际问题解决中的高效性。
摘要由CSDN通过智能技术生成

字典的基础我们已经学习完了,这节我们分享下字典的实际应用之一。

案例如下:

837b1b1323c462df58d4df26fa70b1ea.gif

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

如果直接用函数做,我们可以先把姓名列用删除重复项获得不重复的姓名,求首次拜访时间用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

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

转自:米宏Office

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值