vba字典重复key_Excel VBA字典技术,提取客户第一次出现的记录

案例演示

先看案例,下图中为一张销售表,每位客户分别在不同时间段购买过多次商品,现在需要提取出每位客户第一次的购买情况:

4277097c4c8df0cf47a7163cf701c2a7.png

这里利用字典技术处理:

新建一个模块,输入以下代码,点击运行,即可提取出每位客户首次购买商品数量,动图展示如下:

0bba4ba45a64448cedab1573f28cba07.gif

以上是利用字典技术的一个小案例,今天我们系统的说下字典的作用!

初识字典

字典(Dictionary):是微软Windows脚本语言中的一个很有用的对象。

字典可以理解为一个特殊的二维数组,由key(键)和Item组成,其中key具有唯一性和不重复性;

字典并不存在于VBA中,需要调用,调用方法:

Set d = CreateObject("scripting.Dictionary");

向字典中添加键、值:d.Add key1, Item1;

获取字典的所有key:d.Keys,返回一个数组;

获取字典的所有Item:d.Items,返回一个数组;

由于字典的key是唯一的,所以当添加两个一样的key时会报错,如下图所示:

9e36ca1e5de7a9220295a616fd41bb2f.png

利用这一特性,我们可以对数据进行去重数据!

案例说明

回到刚开始的案例,把数据源的B列姓名作为key,数量作为Item,由于key具有唯一性,所以字典在存入相同用户的时候只会保留第一次存入用户的信息,后面的会报错,利用一句“On Error Resume Next”,发生错误,调至下一步,即可解决报错问题。

当然,针对原始数据源,因为要求客户最早一次购买数量,需要将数据按日期升序处理,再利用字典处理,不然无法返回正确结果。

代码明细如下图所示

Sub 提取首次购买数量()On Error Resume NextSet d = CreateObject("scripting.dictionary")arr = Range("b1:c" & Cells(Rows.Count, 3).End(xlUp).Row)For i = 1 To UBound(arr)d.Add arr(i, 1), arr(i, 2)Next[e1].Resize(d.Count) = Application.Transpose(d.Keys)[f1].Resize(d.Count) = Application.Transpose(d.Items)End Sub

小结

字典在VBA中的应用还是很广泛的,这里举个代表性的例子,分享给大家,希望有所帮助,如果觉得有用,欢迎关注我!

cf72561fe4e34cc9e452b26dce89fb43.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值