VBA dictionary的用法

  • Post author:
  • Post category:其他




1.VBA中创建字典。

dictionary是保存

数据键



项目对

的对象。

下面代码示范如何创建 Dictionary 对象:

Dim myd As Object
Set myd = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     ’添加键和项目。
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...



应用举例

实现从A列中提取B列中不存在元素并放在C列



代码如下:

Sub shaixuan()
Dim a, b
a = 1
b = 2
Set dic = CreateObject("scripting.dictionary")
arr = [A1].CurrentRegion
For i = 1 To UBound(arr)
    dic(Cells(i, "A").Value) = ""'把数组第一列作为字典的关键字,对应的项目为空白
    'dic(Cells(i, a).Value) = ""
    'dic(arr(i, a)) = " "
Next i
For j = 1 To UBound(arr)
   If dic.Exists(arr(j, b)) Then'如果数组第二列在字典dic中存在,那么从 Dictionary对象中删除键和项目对。
      dic.Remove (arr(j, b))
   End If
Next j
[c1].Resize(dic.Count, a) = Application.Transpose(dic.keys)'转置显示
End Sub

补充知识:

1.Resize用于调整指定区域的大小,返回代表调整后的区域。

2.Transpose函数的功能是将数组转置,如数组是一维数组,默认数组成一行排列,转置后成为一列

例子:

Sub Transpose转置()
Dim arr(1 To 100)
For i = 1 To 10
    arr(i) = Cells(i, 1)
Next
Range("b1").Resize(UBound(arr)) = Application.Transpose(arr)
End Sub

运行结果:

在这里插入图片描述



运行结果如下图所示:

运行结果



版权声明:本文为qq_43768296原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。