簡體   English   中英

VBA Excel將值添加到字典

[英]VBA Excel adding values to dictionary

好吧,也許我已經看了太長時間了,但是我一直收到預期的表達式錯誤,我認為這只是一個語法問題,但我不確定。 我遍歷一張紙並將一列的唯一值添加為字典的鍵,同時將與鍵對應的數字相加。 例如,如果我有:

A2
B 3
B 4
A 5
C 6

我希望字典看起來像:

A 7
B 7
C 6

這是我的代碼,感謝您的幫助。

Sub Name()
    Dim rng As Range
    Dim x As Integer
    Dim ranga As String
    Dim dico As Dictionary
    Set dico = New Dictionary
    Dim var As Variant
    Dim lastrow As Integer
    With Worksheets("Sheet1")
        lastrow = Range("A" & .Rows.Count).End(xlUp).Row
        ranga = "C6" & ":" & "C" & CStr(lastrow)
        Set rng = Range(ranga)
        For Each var In rng.Cells
            If dico.Exists(var.Value) Then
                dico(var.Value) = dico(var.Value) + var.Offset(0, 4).Value
            Else
                dico.add var.Value, var.Offset(0, 4).Value
            End If
        Next var
    End With

    With Worksheets("Sheet2")
        Set rng = Range("A2")
        Dim i As Integer
        i = 0
        For Each var In dico.Keys
            rng.Offset(i).Value = var
            rng.Offset(i, 1).Value = dico(var)
        Next var
    End With

End Sub

我是stackoverflow的新手,所以我不確定適當的禮節,但這是一個可行的解決方案。

Public Sub dict_counter()
    Dim counter As New Dictionary
    Dim key As Range: Set key = ThisWorkbook.Sheets("sheet1").Range("A1")
    While Not IsEmpty(key)
        If counter.Exists(key.Value) Then
            counter(key.Value) = counter(key.Value) + key.Offset(ColumnOffset:=1)
        Else
            counter(key.Value) = key.Offset(ColumnOffset:=1)
        End If
        Set key = key.Offset(RowOffset:=1)
    Wend

    'Obviously you can output the dict contents to whatever location
    'is convenient

    Dim k As Variant
    For Each k In counter
        Debug.Print k; counter(k)
    Next k
End Sub

代替

dico(var.Value) = dico(var.Value) + var.Offset(0, 4).Value

它應該是

dico.Item(var.Value) = dico(var.Value) + var.Offset(0, 4).Value

參見MSDN

另外,如果使用With ,則必須實際放置Lead . 您要在其中使用方法或屬性的方法如下:

With Worksheets("Sheet1")
    lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
End With

參見MSDN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM