' SUM Value If
' Ignores N/A
Public Function SumValueIf(ByVal objRange As Range, ByVal objCriteria As Range, ByVal objSumRange As Range) As Currency
Dim intRow As Integer
Dim objRangeValue As Object
Dim objCriteriaValue As Object
Dim objValue As Object
Dim dblValue As Currency
Dim dblSum As Currency
' Get the criteria value
objCriteriaValue = objCriteria(1, 1)
' Walk through the rows
For intRow = 1 To objRange.Rows.Count Step 1
' Get the current value
objRangeValue = objRange(intRow, 1)
' Compare values
If (objRangeValue = objCriteriaValue) Then
' Get the value
objValue = objSumRange(intRow, 1)
' Is valid number?
' Ignore any strings, #N/A, #Error, etc.
If (IsNumeric(objValue)) Then
' Get the value
dblValue = CCur(objValue)
' Sum
dblSum = dblSum + dblValue
End If
End If
Next
' Get the value
SumValueIf = dblSum
End Function
The function can be used in the following way:
= SumValueIf(A1:A10; "abc"; B1:B10)
where A1:A10 is the compare column. Only sum the value in column B1:B10 if the value in column A is equal to "abc".