【问题标题】:Counting number unique values in list by name/category按名称/类别计算列表中的数字唯一值
【发布时间】:2016-02-18 00:03:10
【问题描述】:

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

例子:

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

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

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

=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,但没有达到那个神奇的组合。

你能帮帮我吗?

【问题讨论】:

  • 您可以将 A:B 列复制到新列集中,在两列上执行 Remove Duplicates,然后在新列集中的名称上执行 COUNTIF

标签: excel


【解决方案1】:

试试这个简短的宏:

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

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多