-2

我有一个我创建的 Excel VBA。它根据输入文件生成输出。

在该文件中,有一个包含用户名的字段,这些用户名在整个列中重复。

我需要做的是,将用户名分配给单独的单元格,使其唯一不重复,然后计算重复的单元格。

4

1 回答 1

0

假设我的 excel 工作表设置如下:

  1. A列中的用户名列表
  2. 在 BI 列中想要所有唯一的用户名
  3. 在 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 才能使字典正常工作

于 2013-06-15T11:15:54.403 回答