2017-02-09 8 views
1

コレクションを使用して異なる数値を数えようとしています。コードの一部は次のとおりです。コレクションを使用して異なる数値を計算する

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 

これは機能しません。 CountCSIDDistinct値は、入力(1,1,2,2)に対しては0ですが、期待値は2です。誰かが修正を手伝ってくれますか?コレクションを使用する必要があります。辞書やその他のデータ構造を使用することはできません。

答えて

0

主な問題は、アイテムをコレクションに追加する方法にあります。 On Error Resume Next行をコメントアウトすると、エラーが表示されます。

コレクションAddメソッドの定義は次のようになります。これにより enter image description here

CollecUniqueCSID.Add a, aあなたはaが値と鍵であると述べました。問題は、キーが文字列で、整数を入力する必要があることです。

これは、あなたが本当にこのような整数を文字列にキャストしたいものである場合:あなたはOn Error Resume Nextラインを持っている理由かもしれません重複するキーを持っている場合

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

をこれはもちろん、エラーがスローされます重複をスキップします。働いていた次のように追加の文を変更

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

: CollecUniqueCSID.Addアイテム:あなたはXYポイントのように両方の値を格納するために探している場合


は、代わりに配列を使用する、キーを= := CStr(a) ありがとうございます@ポートランドランナー –

関連する問題