按名称/类别计算列表中的数字唯一值

时间:2016-02-17 14:57:22

标签: excel

我试图根据给定名称计算列表中唯一值的数量。

示例:

enter image description here

在这个例子中,Abi有2个唯一的数字,Barry有1个,Chrissy有2个,Dave有1个。

我正在努力寻找一个excel公式,我可以在列中查看并计算每个名称的唯一值的数量:

enter image description here

我发现这个公式给出了过多的唯一数字,如果它们的数字实际是数字(你可能会注意到示例中的小绿色三角形。由于数字的生成方式,数字被存储作为文字):

=SUM(IF(FREQUENCY(A1:A8;A1:A8)>0;1))

我尝试过这个公式,但只想出了一个#VALUE !,无论这些数字是否是文字:

=SUM(IF(FREQUENCY(IF(LEN(E6:E14)>0;MATCH(E6:E14;E6:E14;0);""); IF(LEN(E6:E14)>0;MATCH(E6:E14;E6:E14;0);""))>0;1))

我已经玩过IF语句,SUMIF,COUNTIFS,但没有点击那个神奇的组合。

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

试试这个短宏:

Sub UniqueTable()
    Dim i As Long, N As Long, c As Collection, M As Long
    Dim j As Long, vd As String, va As String

    Columns("A:A").Copy Range("D1")

    ActiveSheet.Range("D:D").RemoveDuplicates Columns:=1, Header:=xlYes

    Range("E1").Value = "# of unique values"

    N = Cells(Rows.Count, "D").End(xlUp).Row
    M = Cells(Rows.Count, "B").End(xlUp).Row

    For i = 2 To N
        Set c = Nothing
        Set c = New Collection
        vd = Cells(i, "D").Value
        For j = 2 To M
            va = Cells(j, "A").Value
            If va = vd Then
                On Error Resume Next
                    c.Add Cells(j, "B").Value, CStr(Cells(j, "B").Value)
                On Error GoTo 0
            End If
        Next j
        Cells(i, "E").Value = c.Count
    Next i
End Sub

enter image description here