使用集合计算不同的数字

时间:2017-02-09 17:03:06

标签: excel excel-vba vba

我正在尝试使用集合计算不同的数字。部分代码如下:

With ActiveSheet
ArrCSID = .Range(.Cells(2, "A"), .Cells(.Rows.Count, "A").End(xlUp)).Value2
Columns("A").Interior.ColorIndex = xlNone

On Error Resume Next
For Each a In ArrCSID
    CollecUniqueCSID.Add a, a
Next

For d = LBound(ArrCSID, 1) To UBound(ArrCSID, 1)
    <<Some validation check on the values of ArrCSID>>
Next d

CountCSIDTotal = d - 1
CountCSIDDistinct = CollecUniqueCSID.Count

这不起作用。对于输入(1,1,2,2),CountCSIDDistinct值为0,而预期值为2.有人可以帮我修复吗?必须使用集合,不能使用字典或任何其他数据结构。

1 个答案:

答案 0 :(得分:0)

主要问题似乎在于如何将项目添加到集合中。如果您注释掉On Error Resume Next行,则会开始查看错误。

Collection Add方法定义如下所示: enter image description here

通过这个:CollecUniqueCSID.Add a, a你的说法a是价值和关键。问题是密钥需要是一个字符串,并输入一个整数。

如果这是您真正想要的,那么将整数转换为如下字符串:

CollecUniqueCSID.Add Item:=a, Key:=CStr(a)

如果你有一个重复的密钥,这当然会抛出一个错误,这可能就是为什么你有On Error Resume Next行来跳过重复项。

如果您正在寻找像xy点那样存储两个值,请改为使用数组:

CollecUniqueCSID.Add Item:=Array(a, a)