excel中字典是一个很有用的功能,设置在很多方面操作比数组更为灵活,尤其是对于查找是否存在数据到适配方面。
下面是一段关于字典适配查询的代码。
字典的记录一般是记录(索引)-值这样的方法,其中值可以很灵活,涉及到具体表格的话,可以是单个单元格数值,也可以是多个单元格数值(连字符连接),也可以是数组的某一维数据。
'这个是通过字典方法来获取是否存在对应记录的操作。
'本实例的目的就是读取bb中某个数据,查看它是否存在与aa中。如果存在则进行相应的操作。
Private Sub matchme()
Dim i%, ix%, ra%, rb%
Dim aa$, bb$
Dim arr
aa = "要查询该表中是否存在记录的表名"
ra = Sheets(aa).Range("b65536").End(xlUp).Row
bb = "准备查询内容的表名,如我要从该表中提取记录查询是否存在与上面aa中"
rb = Sheets(bb).Range("a65536").End(xlUp).Row
Set d = CreateObject("Scripting.Dictionary") '设置字典
For i = 2 To ra '逐行将aa数据读入到字典里面,
d(Sheets(aa).Cells(i, "b").Value) = Sheets(aa).Cells(i, "d").Value '也可以是采用cells(i,"d").value & "|" & cells(i,"e")这样用指定符号连接多个单元内容
Next
For ix = 1 To rb '逐行进行对比
If Not d.exists(Sheets(bb).Cells(ix, "f").Value) Then '表示在字典中存在表格bb当前行某列的记录(索引)
strtemp =d(Sheets(bb).Cells(ix, "f").Value) '获取对应索引的数据值。这里要注意索引和记录的区别。
msgbox strtemp '找到跳出提示对话框
End if
Next
d.RemoveAll '结束后清除字典,节约资源占用
End Sub