数组字典_EXCEL字典应用实例六(条目数组的用法)

本文介绍了如何使用数组字典在Excel中实现查询功能。通过创建字典,将商品信息(编号、品名、规格、单价)存储为数组,当在采购单中输入商品编号时,可以快速匹配并填充相关信息。示例代码展示了如何在变更事件中利用字典和数组处理数据,强调在实践中不断解决问题以提升技能。
摘要由CSDN通过智能技术生成

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

如下图:

a4248011c18b6c63524c1dddcba3593a.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))

Next

If Target.Column = 1 And Target.Row > 2 And Target.Row < 10 Then

Target(1, 2).Resize(1, 3) = d(Target.Value)

End If

红色部分是把商品信息写入字典,我们可以看到利用数组的写法,可以把数组arr中的几个元素合并起来写进item中去,这样上面的难点就迎刃而解了。

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

2c44cc9b4a0d4a5f92e48dd1f21432a3.gif

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

Sub 加班时间统计()

Dim d As Object, arr, i%, n%, arr1, m, o, A, B

Set 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 If

Next

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

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

End Sub

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

转自:米宏Office

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值