Microsoft Excel - Macros - Count - Count Binary

' Binary Count of array.
' Returns the number of vCrit found within the array oArrWithCrit.
Function ArrayCountIf(oArrWithCrit As Variant, vCrit As Variant)
    Dim low As Long
    low = LBound(oArrWithCrit)
    Dim high As Long
    high = UBound(oArrWithCrit)
    Dim i As Long
    Dim J As Long
    Dim result As Boolean
 
    ArrayCountIf = 0
 
    Do While low <= high
        i = (low + high) / 2
        If vCrit = oArrWithCrit(i, 1) Then
            ArrayCountIf = ArrayCountIf + 1
            ' Now that found run sequentially while same value
            J = i - 1
            i = i + 1
 
            Do While (i <= high)
                If vCrit = oArrWithCrit(i, 1) Then
                    ArrayCountIf = ArrayCountIf + 1
                    i = i + 1
                Else
                  Exit Do
                End If
            Loop
 
            Do While (J >= low)
                If vCrit = oArrWithCrit(J, 1) Then
                    ArrayCountIf = ArrayCountIf + 1
                    J = J - 1
                Else
                  Exit Do
                End If
            Loop
 
            Exit Do
        ElseIf vCrit < oArrWithCrit(i, 1) Then
            high = (i - 1)
        Else
            low = (i + 1)
        End If
    Loop
 
End Function