昨天的一篇文章,采用了字典的做法。今天开篇讲一下字典的最重要的两个参数key和item。
什么是字典?VBA中有个Dictionary对象,用于存储数据关键字(Key)和条目(item)对,管着个对象叫做字典
字典存储数据有两个特点:
一是条目(item)与关键字(key)配对存在。(即一一对应)
二是关键字(Key)唯一。(即key没有不能有重复值)
字典的运用主要是基于以上的两点。特别是key的唯一性。
字典如何使用由于字典不是VBA本生的用法,所以使用字典的话,需要引用。常规有两种方法引用字典。一种是前期绑定,一种是后期绑定。前期绑定,用的比较少,篇幅所限就不展开讲了。就讲一下后期绑定。
sub 后期绑定()
Dim dic
Set dic= CreateObject("Scripting.Dictionary")
End Sub
只要用一个set 上字典的名字 =CreateObject("Scripting.Dictionary")就绑定了字典。
字典的key及item的理解本篇结合数组详解一下key及item
先看一列,同样复制A1:B8区域的数据,分别用数组与字典的写法。
上述示例中,D,E列的写入是用的数组,H,I列的写入用的是字典。
代码的示例如下:
Sub 字典入门()
Application.ScreenUpdating = False
Dim arr, dic, nRow
Set dic = CreateObject("Scripting.Dictionary")
'把A1到B8的区域的数字,装入数组
arr = Range("a1").CurrentRegion
'把A列的数组装入字典的key
'把B列的数据装入字典的item
nRow = Range("a" & Rows.Count).End(3).Row
For i = 1 To nRow
dic(Cells(i, 1)) = Cells(i, 2)
Next i
'把数组写到D E列
Range("d1").Resize(UBound(arr), UBound(arr, 2)) = arr
'把字典的key与item分别写到H I列
Range("h1").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.keys)
Range("I1").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.items)
Application.ScreenUpdating = True
End Sub
可以看到。把数据放入数组及从数组里面提出数据,都很方便。
但是把数据装入字典,就不得不借助于For 循环。下面用图例讲解本代码:
无论什么情况下keys与items都只能是一维的数组,如果你按照表格的思维来理解的话,那么dic就只有两列数据一列为key另外与之对应的为items。
注:如图所示的三列数据,B列数据不能作为key因为用重复值。只有A、C列可以作为key。
那么对于三列以上的数据会用到字典嵌套数组了。无论是key还是item都可以嵌套数组。关于字典的去重及套用数组的用法,在后面再讲。
,