VBA字典的唯一性计数

时间:2016-09-01 01:44:46

标签: excel vba excel-vba dictionary

我需要一个宏来查找列表中的所有唯一名称然后对它们进行计数。然后我需要在另一个excel页面上显示它们。

在阅读之后,我认为最好的方法是使用词典?但经过几次尝试后,我似乎无法破解它。

示例列表: - 苹果 - 橙子 - 香蕉 - 香蕉 - 橙子 - 梨

输出将是: Apple 1 橙色2 香蕉2 梨1

1 个答案:

答案 0 :(得分:1)

这应该给出基本的想法 - 使用您想要计数的项目作为键,并将计数本身作为值。如果它已经在Dictionary中,则递增它。如果没有,请添加它:

Const TEST_DATA = "Apple,Orange,Banana,Banana,Orange,Pear"

Sub Example()
    Dim counter As New Scripting.Dictionary
    Dim testData() As String

    testData = Split(TEST_DATA, ",")
    Dim i As Long
    For i = LBound(testData) To UBound(testData)
        If Not counter.Exists(testData(i)) Then
            counter.Add testData(i), 1
        Else
            counter.Item(testData(i)) = counter.Item(testData(i)) + 1
        End If
    Next 

    Dim key As Variant
    For Each key In counter.Keys
        Debug.Print key, counter(key)
    Next      
End Sub