Excel VBA基于分组生成报告

时间:2013-06-15 02:52:22

标签: excel excel-vba vba

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

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

我需要做的是,将用户名指定为不重复的单独单元格,然后计算重复的单元格。

1 个答案:

答案 0 :(得分:0)

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

  1. A列中的用户名列表
  2. 在B栏中,我想要所有唯一的用户名
  3. 在C栏中,我想要计算每个名字的数量

        Username     Unique     Count
    1   John         John       1
    2   Susan        Susan      2
    3   Chris        Chris      3
    4   Susan
    5   Chris
    6   Chris
    
  4. 我可以在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使字典工作