我有一个我创建的 Excel VBA。它根据输入文件生成输出。
在该文件中,有一个包含用户名的字段,这些用户名在整个列中重复。
我需要做的是,将用户名分配给单独的单元格,使其唯一不重复,然后计算重复的单元格。
假设我的 excel 工作表设置如下:
在 CI 列中,想要计算每个名称有多少个
Username Unique Count
1 John John 1
2 Susan Susan 2
3 Chris Chris 3
4 Susan
5 Chris
6 Chris
我可以在 VBA 中通过将用户名放入字典中来做到这一点,其中Key
是用户名,而Value
是重复次数。然后我只是遍历字典以获得所需的输出。
这段代码对我有用:
Sub UserNameCount()
Dim usernames As Range, name As Range, rw As Long
Set dict = CreateObject("Scripting.Dictionary")
Set usernames = Range("A2:A" & Range("A1").End(xlDown).Row)
rw = 2
For Each user In usernames
If Not dict.Exists(user.Value) Then
dict.Add user.Value, 1
Else
dict.Item(user.Value) = dict.Item(user.Value) + 1
End If
Next user
For Each v In dict.Keys
Range("B" & rw) = v
Range("C" & rw) = dict.Item(v)
rw = rw + 1
Next
Set dict = Nothing
End Sub
注意:您可能需要执行 Tools > References > Microsoft Scripting Runtime 才能使字典正常工作