今天我们分享一下数据字典。
我们先来说说应用背景:
下面这样一个数据表
我们要对B列的数据在A列中遍历查找符合条件1-4的后进行判断,来看C到F列符不符合条件,如果符合的话,就能在相应的位置写“OK”。
注:点击下面蓝字可以跳转
但是,如果数据特别多的话,几万条数据的遍历或者find,首先,遍历B列是一定得有的了,得在这个遍历中再嵌套A列的遍历,使得代码的执行效率变得很慢,需要好久才能对着几万条数据处理完。
我们用数据字典是怎么提高的执行效率呢?
我们先对A列的数据遍历一遍,把数据存到数据字典里,然后在遍历B列,从数据字典里面取数据,这样我们一共遍历两遍就可以实现了,前面的方法则需要几万遍。所以,执行效率高。
数据字典共有有4个属性和6种方法。
我们要用数据字典,先需要声明一个object变量
例如:Dim Mydic As Object
然后,创建数据字典。
Set Mydic = CreateObject("scripting.dictionary")
之后我们才能对数据字典进行操作。
1 方法
1.1 ADD
object.Add (key,item)
其中key为键,item为值。
例如:Mydic.Add "user001" , "123456"
我们就在数据字典里面添加了为user001的键,其值为123456。
数据字典中的键与值是一一对应的关系且键唯一。
1.2 Exists
object.Exists(key)
返回True或False。
刚才说过,键是唯一的,所以我们在添加一个键的时候一般会判断,这个键在字典中是否存在,不判断直接添加可能会出错。
object.Keys
返回一个数组。
返回这个字典的所有键。
object.Items
返回一个数组。
返回这个字典的所有值。
例如,我们有这样一个字典,我们可以用1.3和1.4把他们放到Excel里。
Sub Test001
Dim Mydic As Object
Set Mydic = CreateObject("scripting.dictionary")
Mydic.Add "user001" , "123456"
Mydic.Add "user002" , "100000"
Mydic.Add "user003" , "654321"
Range("A1").Resize(Mydic.Count,1)=Application.Transpose(Mydic.keys)
Range("B1").Resize(Mydic.Count,1)=Application.Transpose(Mydic.items)
End Sub
object.Remove(key)
删除字典中的一个键。
object.RemoveAll
删除字典中的所有键。
2 属性
object.Count
返回字典中键(值)的个数。
object.Key(key) =newkey
变更键,把现在存在的key替换成newkey。
object.Item(key)
返回key对应的值。
这里需要注意的是,如果这个key
不存在的话,则会新生成一个key
,并且这个键的值被设置成空。
object.Item(key) =newitem
变更值,把key的值替换成newitem。
这里需要注意的是,如果这个key
不存在的话,则会新生成一个key
,并且这个key
的值被设置成newitem
。
object.CompareMode[ =compare]
其中
compare
参数为是0 (二进制)、1 (文本), 2 (数据库)。
简单说下
0 (二进制)与 1 (文本)的区别。
就是
下区分大小写,0 (二进制)
下不区分大小写。 1 (文本)
联系客服