2017-07-04 17 views
0

次のコードは、GとS列の値を結合し、各値が何回現れるかを数えます。EXCEL VBA - 辞書と配列を使用してカウント

しかし、このコードを実行すると、数値は常に最後の行番号になります。これは、すべての値が同じであると感じていると思います。これをどうすれば解決できますか?

これはコード全体の中核部分であるため、一部の変数は前の行に定義されている可能性があります。問題は自分自身だったところ

Worksheets("Raw Data").Range("BL2:BL" & lastrow).Formula = "=G2&""_""&S2" 
Const CB_COL As Long = 64 

Dim d2 As Dictionary 

Set d2 = New Dictionary 

    For i = 2 To lr 
     If Not d2.Exists(arr(i, CB_COL)) Then 
     d2.Add arr(i, CB_COL), 1 
     Else 
     d2(arr(i, CB_COL)) = d2(arr(i, CB_COL)) + 1 
     End If 
    Next 

    For i = 2 To lr 
     arr(i, CB_COL + 1) = d2(arr(i, CB_COL)) 
    Next 


    With Worksheets("Raw Data") 
     .Range(.Cells(1, 1), .Cells(lr, CB_COL + 1)) = arr 
    End With 
+0

これは私にとって少し混乱しています。 'arr(i、CB_COL)'は重複した値の列を含むべきです。しかし、その後、 'arr'を繰り返しループし、' CB_COL' + 1にカウントを割り当てていますか? – AiRiFiEd

答えて

0

は、実際に私は、私は、配列が定義された前の2列以前、...、アレイ内のそれ以外の場合は、この列には、実際には全く白紙であることを併用している必要があり ...見つけました。

関連する問題