计算if语句不包括字符串并且不等于excel中的数字

时间:2013-11-12 18:43:12

标签: excel vba countif

我有一个excel集,我需要根据名称计算条目。它们都在同一列中,每个条目应该有4个。我需要一个公式来计算具有相同条目的单元格数量,这些条目不以#34;零售"或"商业"并且只返回没有4的单元格中的名称。例如,如果我的数据看起来如此:

    NAME
Retail - John
Retail - Sue
Kara
Kara
Joe
Joe
Joe
Joe
Commercial
Sarah

我想要一个会搜索此列的公式,并且只返回" Kara - 2"和#34;莎拉 - 1"。 "零售"和"商业"从一开始就被排除在外,因为" Joe" = 4我并不关心这一点。有没有什么方法可以让我的搜索列,让它返回第一个计数,以满足C1的标准,下一个到C2,依此类推,直到我有一列只有不合规的条目?我喜欢下面的输出:

NAME        COUNT
Kara          2
Sarah         1  

感谢您的关注,我非常感谢您提供的任何帮助和建议!

1 个答案:

答案 0 :(得分:1)

如果您的数据位于A列,则结果表将位于B列和B列中。运行此宏后C:

Sub MAIN()

Dim A As Range, wf As WorksheetFunction
Dim s1 As String, s2 As String
Dim col As Collection
Set A = Intersect(Range("A:A"), ActiveSheet.UsedRange)
Set wf = Application.WorksheetFunction
Set col = MakeColl(A)

s1 = "Retail"
s2 = "Commercial"
K = 1
For i = 1 To col.Count
    v = col.Item(i)
    If InStr(v, s1) = 0 And InStr(v, s2) = 0 Then
        n = wf.CountIf(A, v)
        If n <> 4 Then
            Cells(K, "B").Value = v
            Cells(K, "C").Value = n
            K = K + 1
        End If
    End If
Next i
End Sub

Public Function MakeColl(rng As Range) As Collection
    Set MakeColl = New Collection
    Dim r As Range
    On Error Resume Next
    For Each r In rng
        v = r.Value
        If v <> "" Then
            MakeColl.Add v, CStr(v)
        End If
    Next r
    MsgBox MakeColl.Count
End Function