ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Create a function that sums based on two or more criteria (https://www.excelbanter.com/excel-programming/381253-create-function-sums-based-two-more-criteria.html)

halibut

Create a function that sums based on two or more criteria
 
I am trying to create a function that sums a worksheet column based on
criteria that reside in adjacent columns. I used the following code
which gave me a type mismatch:

Function Purch_calc(look1 As String, look2 As String) As Single

Dim l1_range As Range
Dim l2_range As Range
Dim s_range As Range

With Sheet6
Set l1_range = .Range("d1:d200")
Set l2_range = .Range("b1:b200")
Set s_range = .Range("e1:e200")
End With

Purch_calc = Application.WorksheetFunction.SumProduct((l1_range =
look1) * (l2_range = look2), s_range)

End Function

Can anyone help me get the above to work or provide an alternative
method of summing a column using multiple criteria.


Thanks
Paul


halibut

Create a function that sums based on two or more criteria
 
Thanks, this is very helpful

Martin Fishlock wrote:
Hi Paul:

As far as I know you can't use array type formula in vba so you have to test
each element seperately.

Look at the code below:

Option Explicit

Function Purch_calc(look1 As String, look2 As String) As Integer

Const l1_offset As Integer = -1 ' Set l1_range = .Range("d1:d10")
Const l2_offset As Integer = -3 ' Set l2_range = .Range("b1:b10")

Dim s_range As Range
Dim rCell As Range

Application.Volatile ' update on changes

Set s_range = ActiveWorkbook.Worksheets("sheet6").Range("e1:e10" )

For Each rCell In s_range
If (rCell.Offset(0, l1_offset) = look1) And _
(rCell.Offset(0, l2_offset) = look2) Then
Purch_calc = Purch_calc + rCell.Value
End If
Next rCell

End Function

--
Hope this helps
Martin Fishlock, Bangkok, Thailand
Please do not forget to rate this reply.


"halibut" wrote:

I am trying to create a function that sums a worksheet column based on
criteria that reside in adjacent columns. I used the following code
which gave me a type mismatch:

Function Purch_calc(look1 As String, look2 As String) As Single

Dim l1_range As Range
Dim l2_range As Range
Dim s_range As Range

With Sheet6
Set l1_range = .Range("d1:d200")
Set l2_range = .Range("b1:b200")
Set s_range = .Range("e1:e200")
End With

Purch_calc = Application.WorksheetFunction.SumProduct((l1_range =
look1) * (l2_range = look2), s_range)

End Function

Can anyone help me get the above to work or provide an alternative
method of summing a column using multiple criteria.


Thanks
Paul





All times are GMT +1. The time now is 07:20 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com