大家好,我们今日继续讲解VBA代码解决方案的第126讲内容:在VBA中字典的应用。也许许多的朋友对此比较陌生,在有的语言里字典也称之为MAP,应用也是比较广泛的。 字典,其实就是一些'键-值'对。使用起来非常方便,有类似于微型数据库的作用,可用于临时保存一些数据信息。 一 VBA中创建字典:用的是WSH引用。 Dim myd As Object Set myd = CreateObject('Scripting.Dictionary') 二 字典的方法,有Add、Exists、Keys、Items、Remove、RemoveAll,六个方法。 ① Add 用于添加内容到字典中。如myd.Add key, item 第一个参数为键,第二个参数为键对应的值 ② Exists用于判断指定的关键词是否存在于字典(的键)中。如myd.Exists(key)。如果存在,返回True,否则返回False。通常会在向字典中添加条目的时候使用,即先判断字典中是否已存在这个记录,如果不存在则新增,否则进行其它的操作。 ③ Keys获取字典所有的键,返回类型是数组。如myd.Keys() ④ Items获取字典所有的值,返回类型是数组。如myd.Items() ⑤ Remove从字典中移除一个条目,是通过键来指定的。myd.Remove(key)如果指定的键不存在,会发生错误。 ⑥ RemoveAll 清空字典。 三 字典的属性 有Count、Key、Item、ConpareMode四种属性 ① Count用于统计字典中键-值对的数量。也可以简单理解为统计字典中键的个数; ② Key用于更改字典中已有的键。如:myd.Key('oapp') = 'Orange' 如果指定的键不存在,则会产生错误。 ③Item用于写入或读取字典中指定键的值,如果指定的键不存在,则会新增。如.Item('oapp') = 10 下面以一个实例来说明字典的应用:在下图的A列有不同的键,要在对应的键中写入键值,然后把C列对应的键去掉,同时增加一个键,最后在E,F列写出最后的键和键值: 代码如下: Sub mynzdd() Dim dic As Object Sheets('sheet4').Select Set dic = CreateObject('Scripting.Dictionary') '引用字典 Dim arr(1 To 100), i As Long '建立一个数组用来给键赋值 For i = 1 To 100 arr(i) = i 99 Next i i = 1 Do While Cells(i, 1) <> '' dic(Cells(i, 'a').Value) = arr(i) '写入键和键值,要注意写入的方法 i = i 1 Loop i = 1 Do While Cells(i, 3) <> '' dic.Remove (Cells(i, 'c').Value) '移除C列的键值 i = i 1 Loop dic.Add arr(100), '234' '增加一个键对应的键是arr(100)即199,键值是234 [e1].Resize(dic.Count, 1) = Application.Transpose(dic.Keys) '转置显示键 [f1].Resize(dic.Count, 1) = Application.Transpose(dic.items) '转置显示键值 End Sub 代码截图: 返回的结果如下: 我们可以看到,重复的键已经自动的去除了,需要删除的键也已经删除了,需要增加的也增加了,非常的简单。 今日内容回向: 1 什么是字典.它的方法和属性有哪些? 2 如何利用字典去重复的数据? |
|