microsoft_excel:macros:sum:sum_binary
Microsoft Excel - Macros - Sum - Sum Binary
' Returns the sum of all oArrWithValues for all vCrit found within the array oArrWithCrit. Function ArraySumIf(oArrWithCrit As Variant, vCrit As Variant, oArrWithValues 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 ArraySumIf = 0 Do While low <= high i = (low + high) / 2 If vCrit = oArrWithCrit(i, 1) Then If IsNumeric(oArrWithValues(i, 1)) Then ArraySumIf = ArraySumIf + oArrWithValues(i, 1) End If ' Now that found run sequentially while same value i = i + 1 J = J - 1 Do While (i <= high) If vCrit = oArrWithCrit(i, 1) Then If IsNumeric(oArrWithValues(i, 1)) Then ArraySumIf = ArraySumIf + oArrWithValues(i, 1) End If i = i + 1 Else Exit Do End If Loop Do While (J >= low) If vCrit = oArrWithCrit(J, 1) Then If IsNumeric(oArrWithValues(i, 1)) Then ArraySumIf = ArraySumIf + oArrWithValues(i, 1) End If 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
and
' Returns the sum of all oArrWithValues for all vCrit found within the array oArrWithCrit. Function ArraySumIfx(oArrWithCrit As Variant, vCrit As Variant, oArrWithValues 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 ArraySumIf = 0 Do While low <= high i = (low + high) / 2 If vCrit = oArrWithCrit(i, 1) Then ArraySumIf = ArraySumIf + oArrWithValues(i, 1) ' Now that found run sequentially while same value i = i + 1 J = J - 1 Do While (i <= high) If vCrit = oArrWithCrit(i, 1) Then ArraySumIf = ArraySumIf + oArrWithValues(i, 1) i = i + 1 Else Exit Do End If Loop Do While (J >= low) If vCrit = oArrWithCrit(J, 1) Then ArraySumIf = ArraySumIf + oArrWithValues(i, 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
microsoft_excel/macros/sum/sum_binary.txt · Last modified: 2021/08/04 14:45 by peter