2017-07-04 56 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

其實我發現那裏的問題是自己... 我應該結合這兩個列前,被定義數組前...否則此列數組中實際上是完全空白。