在Excel中计算唯一值数量

14

我需要在Excel中计算范围(C2:C2080)中的唯一值。找到的公式:

=SUM(IF(FREQUENCY(MATCH(C2:C2080;C2:C2080;0);MATCH(C2:C280;C2:C2080;0))>0;1)) 

返回错误的值。

更新: 糟糕的解决方案:

Sub CountUnique()

Dim i, count, j As Integer

count = 1
For i = 1 To 470
    flag = False
    If count > 1 Then
        For j = 1 To count
            If Sheet1.Cells(i, 3).Value = Sheet1.Cells(j, 11).Value Then
                flag = True
            End If
        Next j
    Else
        flag = False
    End If

    If flag = False Then
        Sheet1.Cells(count, 11).Value = Sheet1.Cells(i, 3).Value
        count = count + 1
    End If

Next i

Sheet1.Cells(1, 15).Value = count

End Sub
11个回答

1
自2018年秋季以来,使用新的动态数组函数可以更轻松地解决这个问题(目前仅适用于Office 365客户端 - 这个解决方案在Excel 2016/2019上不起作用)。
=COUNTA(UNIQUE(C2:C2080))
UNIQUE 函数将在范围内生成唯一值数组,可以使用 COUNTA 进行计数。
如果您的范围中有空白,可以使用 FILTER 函数将其过滤掉:
=COUNTA(UNIQUE(FILTER(C2:C2080,C2:C2080<>"")))

1
真是我要添加的答案。干得好! - Chiramisu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接