我正在尝试使用集合计算不同的数字。部分代码如下:
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.有人可以帮我修复吗?必须使用集合,不能使用字典或任何其他数据结构。
答案 0 :(得分:0)
主要问题似乎在于如何将项目添加到集合中。如果您注释掉On Error Resume Next
行,则会开始查看错误。
通过这个:CollecUniqueCSID.Add a, a
你的说法a
是价值和关键。问题是密钥需要是一个字符串,并输入一个整数。
如果这是您真正想要的,那么将整数转换为如下字符串:
CollecUniqueCSID.Add Item:=a, Key:=CStr(a)
如果你有一个重复的密钥,这当然会抛出一个错误,这可能就是为什么你有On Error Resume Next
行来跳过重复项。
如果您正在寻找像xy点那样存储两个值,请改为使用数组:
CollecUniqueCSID.Add Item:=Array(a, a)