首页 文章

如何计算Excel中不包含某些字符的唯一单元格数

提问于
浏览
1

我正在尝试计算C列中没有“#”或“ - ”的唯一单元格数 .

我有一列包含名称的单元格 . 其中一些名称是重复的,有些名称中包含“ - ”和/或“#”等字符 - 我试图将这些单元格排除在外 .

我有2个公式,每个公式都是我需要的一半,但我需要结合2个公式来得到正确的答案:

此公式计算唯一单元格的数量(并处理空白):= SUM(IF(COUNTIF(C4:C3689,C4:C3689)= 0,“”,1 / COUNTIF(C4:C3689,C4:C3689)) )

此公式计算没有“#”或“ - ”的单元格数量:= SUMPRODUCT(N(LEN(SUBSTITUTE(SUBSTITUTE(C4:C3689,“ - ”,“”),“#”,“” ))= LEN(C4:C3689)))

你知道如何结合这2个公式吗?如果您知道如何以不同的方式(自定义函数或VBA)组合这两个公式,那也很棒 .

谢谢 .

2 回答

  • 2

    此公式将计算指定范围内的不同条目的数量,不包括任何包含 #- 的条目

    =SUMPRODUCT((ISERR(SEARCH("#",C4:C3689))*ISERR(SEARCH("-",C4:C3689))*(C4:C3689<>""))/COUNTIF(C4:C3689,C4:C3689&""))

  • 0

    使用这样的函数:

    =GetUniqueCount("C4:C3689")

    添加功能代码:

    Function GetUniqueCount(rng As Range) As Variant
    'Dim rng as Range
    'Set rng = Range("C4:C3869") 'Modify as needed
    
    Dim r as Range
    Dim uniqueCount as Long
    Dim dict as Object
    Set dict = CreateObject("Scripting.Dictionary")
    For each r in rng.Cells
        If Not dict.Exists(r.Value) Then
            If Instr(1, r.Value, "#") = 0 Then
                If Instr(1, r.Value, "-") = 0 Then
                    dict(r) = ""
                    uniqueCount = uniqueCount + 1
                End If
            End If
        End If
    Next
    
    GetUniqueCount = uniqueCount
    Set dict = Nothing
    End Function
    

相关问题