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