【发布时间】:2019-12-01 16:40:15
【问题描述】:
我正在尝试在 A 列中查找所有唯一值,将唯一项复制到集合中,然后将唯一项粘贴到另一张表中。范围将是动态的。到目前为止,我得到了下面的代码,它无法将值复制到集合中,我知道问题出在定义 aFirstArray 上,因为在我尝试使其成为动态之前,该代码在创建集合时运行良好。
我在这做错了什么,因为项目不会进入集合,但代码只是运行到结束而没有循环。
Sub unique()
Dim arr As New Collection, a
Dim aFirstArray() As Variant
Dim i As Long
aFirstArray() = Array(Worksheets("Sheet1").Range("A2", Range("A2").End(xlDown)))
On Error Resume Next
For Each a In aFirstArray
arr.Add a, a
Next
For i = 1 To arr.Count
Cells(i, 1) = arr(i)
Next
End Sub
【问题讨论】:
-
删除
On Error Resume Next看看你遇到了什么错误,然后相应地处理它们。就个人而言,我更喜欢使用脚本字典而不是集合。 -
问题似乎出在 arr.Add a,a 返回运行时错误 13: type mismatch。我的数据集是(A 列)是从 A2 开始的数字,所以我不明白问题是什么。
-
此参考可以帮助您使用字典方法实现目标。 stackoverflow.com/questions/45482245/…>
-
脚本字典的好处是它们有一个
.Exists方法。 -
@brax: 在向字典中添加元素时,你不需要
.Exists,你可以写dict(key)= value,如果key不存在就会添加,见@987654322 @.
标签: excel vba unique-values