vba字典所有item清零 vba清除字典_数组


今天我们来讲一下字典的应用,字典Dictionary是VBA中一个非常有用的对象。字典对象相当于一种联合数组,它是由具有唯一性的关键字(Key)和它的项(Item)构成。

由于字典的Key具有唯一性,所以我们经常用它来解决一些需要忽略重复值的问题,例如现在有一个工作簿,里面有3张工作表,每张表格的A列都是姓名,所有这些姓名中有些是重复的,要求编写一段代码,在另一个工作表上显示不重复的姓名。

我们按Alt+F11调出VBA代码界面,插入一个模块,新建一个过程Sub

在代码中,我们首先定义一个字典对象

Set dic = CreateObject("Scripting.Dictionary")

然后,我们需要遍历所有工作表,将A列姓名数据依次添加到我们刚刚定义的字典中

For Each sht In Sheets    If sht.Name <> "Sheet4" Then'因为Sheet4存放统计后的数据,所以不计入统计范围        For i = 1 To sht.[A65536].End(xlUp).Row            dic(sht.Cells(i, 1).Value) = ""        Next    End IfNext

接下来,把字典的Key全部提取出来,它们是一个数组

arrKeys = dic.keys

最后,我们需要将这些姓名放到Sheet4的A列

Sheets(4).[A1].Resize(dic.Count, 1) = Application.Transpose(arrKeys)

Transpose是转置函数,可以进行行列转换

我们来看一下最终效果


vba字典所有item清零 vba清除字典_数据_02

程序最终效果


全部代码如下图:


vba字典所有item清零 vba清除字典_数组_03

代码全貌