使用VBA字典对具有相同键的行求和

时间:2018-10-16 18:24:02

标签: excel database vba dictionary

基本上我有一个带有影响表的数字数据表

 A1    1
 A1    5
 A1    6
 B1    2
 B1    3
 C1    6
 C1    8

我想要的结果是

A1    1              A1    12
A1    5              B1    5
A1    6              C1    14
B1    2
B1    3
C1    6
C1    8

我以为我可以用词典来做,问题是我想不通,我已经研究了一个星期,但我所能理解的却没有。

我现在写了这段代码:

 Dim k As String
 Dim d As Object
 For each k in d.keys
   lastRow=Sheets("Sheet2").Cells(Rows.Count,1).End(x1Up).Row
     For x=2 to lastRow
        If Cells(x,"A")=k Then
        'basically sum column B and print key + total
        End If
      Next x

谢谢!

1 个答案:

答案 0 :(得分:1)

使用字典是一种快速的方法,特别是如果您首先将数据加载到数组中。

Option Explicit
Public Sub Test()
    Dim arr(), i As Long, dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    arr = [A1:B7].Value
    For i = LBound(arr, 1) To UBound(arr, 1)
        dict(arr(i, 1)) = dict(arr(i, 1)) + arr(i, 2)
    Next

    [C1].Resize(dict.Count, 1) = Application.Transpose(dict.KEYS)
    [D1].Resize(dict.Count, 1) = Application.Transpose(dict.items)

End Sub