如何根据函数中的其他列计算唯一用户?

时间:2017-03-09 17:09:48

标签: excel vba count duplicates

enter image description here

我有一个这样设置的数据集,我有不同的周数,主机和用户(我将重点关注)。

我需要做的是能够计算每个主机每周唯一用户的数量。我将每周更新这个列表,所以我想使用一个公式,我可以放入一个宏来自动化它,而不是做一个数据透视表。

到目前为止我所拥有的:

SUMPRODUCT(COUNTIFS(Active_Users_Master!$A:$A;"9";Active_Users_Master!$D:$D;'C:\Users\wra\Desktop\host.xlsx'!host1))

以上计算每周用户数9,并将主机名与我在另一个excel中创建的命名范围进行比较。所以它做了所有事情,但它不计算唯一用户,这是最后一步。我也不打算简单地删除重复项,因为我希望最终保存所有信息,而不是丢失任何数据。

看一下我附上的图片,我希望“琼斯”在我的第9周主持人1中只出现一次。

对此的任何帮助将不胜感激。如果你可以帮助编写VBA脚本,那将更加惊人!谢谢!

1 个答案:

答案 0 :(得分:0)

你可以用这个:

Option Explicit

Sub ListUnique()
    Dim c As Range
    Dim key As Variant

    With CreateObject("Scripting.Dictionary")
        For Each c In Range("A2", Cells(Rows.Count, 1).End(xlUp))
            key = c.Value & "|" & c.Offset(, 2).Value & "|" & c.Offset(, 3).Value
            .Item(key) = c.Row
        Next c

        Range("A2", Cells(Rows.Count, 1).End(xlUp)).EntireRow.Hidden = True
        For Each key In .keys
            Rows(.Item(key)).Hidden = False
        Next
    End With
End Sub