我需要一个宏来查找列表中的所有唯一名称然后对它们进行计数。然后我需要在另一个excel页面上显示它们。
在阅读之后,我认为最好的方法是使用词典?但经过几次尝试后,我似乎无法破解它。
示例列表: - 苹果 - 橙子 - 香蕉 - 香蕉 - 橙子 - 梨
输出将是: Apple 1 橙色2 香蕉2 梨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