Function FilterAndSum(myrange As Range, sumRange As Range, Optional ByVal myField1 As Variant, Optional ByVal myCriteria1 As Variant, Optional ByVal myField2 As Variant, Optional ByVal myCriteria2 As Variant, Optional ByVal myField3 As Variant, Optional ByVal myCriteria3 As Variant)
myrange.AutoFilter
myrange.AutoFilter Field:=myField1, Criteria1:="=" & myCriteria1
myrange.AutoFilter Field:=myField2, Criteria1:="=" & myCriteria2
myrange.AutoFilter Field:=myField3, Criteria1:="=" & myCriteria3
mysum = Sum_Visible_Cells(sumRange)
FilterAndSum = mysum
End Function
Function Sum_Visible_Cells(Cells_To_Sum As Object)
Application.Volatile
For Each cell In Cells_To_Sum
If cell.Rows.Hidden = False Then
If cell.Columns.Hidden = False Then
Total = Total + cell.Value
End If
End If
Next
Sum_Visible_Cells = Total
End Function