Excel中的VBA:如果单元格值已经存在,则将单元格值写入列

时间:2014-08-05 17:21:39

标签: excel vba excel-vba

好的,所以我在一列中有一个名称表,在另一列中有相应的数字。大多数名称出现不止一次,每次都有不同的数字。该表可能会在将来添加。我试图编写一个VBA宏,它将输出每个名称一次,并在单独的工作表上输出附加到它们的数字的总和。我没有在8个月内使用过VBA,而且我真的生锈了。建议?

1 个答案:

答案 0 :(得分:1)

记得添加参考microsoft脚本运行时,我相信。你需要在这里使用字典。

Sub test()

    Dim var As Variant
    Dim rng As Range
    Set rng = Range("A1:A100")
    Dim dico As Dictionary

    Set dico = New Dictionary
    For Each var In rng.Cells
        if dico.Exists(var.value) Then
             dico(var.value) = dico(var.value) + var.offset(0,1).value
        else
             dico.Add var.value, var.offset(0,1).value
        end if
    Next var

    Set rng = Range("C1")
    Dim i as double
    i = 0
    For Each var In dico.keys
        rng.offset(i).value = var
        rng.offset(i,1).value = dico(var)
    Next var

End sub