数组字典_字典+数组,这是一对黄金搭档!

这篇博客介绍了如何使用VBA在Excel中通过工作表Change事件和字典数据结构,实现实时查询商品信息并自动填充到采购单中。通过将商品的品名、规格、单价存储为字典的Item,当输入商品编号时,系统能够快速匹配并显示对应信息。此外,还展示了如何结合数组处理数据,提高数据处理效率。案例演示了字典和数组在办公自动化中的应用,有助于提升职场人士的Office技能。
摘要由CSDN通过智能技术生成

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

在讲工作表Change事件时曾经分享过一节:

《开单数量超出库存时,你的系统会自动预警吗?》

学习了字典后,我们知道从字典中读取数据速度超级快,所以我们今天就学习下如何利用字典实现查询功能

如下图:

c419137b08d0521fc28935fa39a03822.gif

在采购单中输入商品编号时,希望从商品信息表中取出对应的品名,规格,单价自动匹配上去。

思路:

把商品信息写入字典,一个商品对应的有品名、规格、单价三个数据,一个Item怎么装三个数据呢这就是难点所在,如果能把品名、规格、单价三个数据写入一个Item中,在采购单中输入商品编号时,在字典中查找Key(商品编号)对应的Item放入三个对应的单元格中即可。

代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)Dim arr, d As Object, i%Set d = CreateObject("scripting.dictionary")arr = Sheets("商品信息").Range("a2", Sheets("商品信息").[d1].End(xlDown))For i = 1 To UBound(arr)    d(arr(i, 1)) = Array(arr(i, 2), arr(i, 3), arr(i, 4))NextIf Target.Column = 1 And Target.Row > 2 And Target.Row < 10 ThenTarget(1, 2).Resize(1, 3) = d(Target.Value)End IfEnd Sub

向右滑动可以查看完整代码

d(arr(i, 1)) = Array(arr(i, 2), arr(i, 3), arr(i, 4))

红色部分是把商品信息写入字典,我们可以看到Item部分利用数组的写法,可以把商品信息中的品名、规格、单价三个元素合并起来以数组的形式写进Item中去,这样上面的难点就迎刃而解了。

本案例结合了工作表Change事件和字典、数组的用法,写到这里突然想起来昨天的案例:

c896cb31fc542eaedbc4a72bfd7e5da6.gif

同样的道理,也可以用条数数组的方法:

代码如下:

Sub 加班时间统计()Dim d As Object, arr, i%, n%, arr1, m, o, A, BSet d = CreateObject("scripting.dictionary")arr = Range("b2", [e2].End(xlDown))For i = 1 To UBound(arr)        If Not d.exists(arr(i, 1)) Then        n = n + 1        d(arr(n, 1)) = Array(arr(n, 2), arr(n, 3), arr(n, 4))    Else        arr1 = d(arr(i, 1))        d(arr(i, 1)) = Array(arr1(0) + arr(i, 2), arr1(1) + arr(i, 3), arr1(2) + arr(i, 4))        End IfNext[g2].Resize(d.Count, 1) = Application.Transpose(d.KEYS)[h2].Resize(d.Count, 3) = Application.Transpose(Application.Transpose(d.items))End Sub

向右滑动可以查看完整代码

有思路不一定就能做出来,只有在实际操作中不断的举一反三,不断的遇到问题,解决问题,才能有所提高!

本节的分享就到这里,鹏哥祝大家每天都有进步。

聚米为谷

博学宏才

更多学习内容

手机端请扫描

f53aa9b1e7d580d97b0d8a096d17c233.png

电脑端请登录

www.mihong.top

米宏陪你做一个好学的人

97fd5455658a551ea1e6d60442751bf8.gif 您点的每个赞,我都认真当成了喜欢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值