我创建了一个Excel VBA。它根据输入文件生成输出。
在该文件中,有一个包含用户名的字段,这些用户名在整个列中重复。
我需要做的是,将用户名指定为不重复的单独单元格,然后计算重复的单元格。
答案 0 :(得分:0)
假设我的excel工作表设置如下:
在C栏中,我想要计算每个名字的数量
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
注意:你可能需要做工具>参考文献> Microsoft Scripting Runtime使字典工作