ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   passing array reference to sumproduct formula-??? (https://www.excelbanter.com/excel-programming/413390-passing-array-reference-sumproduct-formula.html)

PBcorn

passing array reference to sumproduct formula-???
 
I have a UDF (see bottom) which finds a particular col header then looks up a
range in that column. I want to pass this range to a sumproduct formula in
another cell:

=SUMPRODUCT(((TRIM($A$8:$A46)="A")+(TRIM($A$8:$A46 )="B")+(TRIM($A$8:$A46)="C")+(TRIM($A$8:$A46)="D") )*((TRIM($B$8:$B46)="E")),C$8:C46)

So for the above, C$8:C46 would be replaced by REFR()

REFR works fine, returning the correct range reference, but when i put it in
the sumproduct formula a value error results.

Please help

Thanks

Function REFR(Product As Range, Colhead As Range)

Application.Volatile

Dim c As Range
Dim productstring As String
Dim cs As Integer
Dim rs As Integer
Dim sumthese As Variant

productstring = Product.Value


For Each c In Colhead.Cells

If Trim(c) = Trim(productstring) Then

cs = c.Column
rs = c.Row + 1

Set sumthese = Range(Cells(rs, cs), Cells(rs + 35, cs))

Else: End If

Next c

REFR = sumthese.Address(rowabsolute:=False, columnabsolute:=False)

End Function


Dave Peterson

passing array reference to sumproduct formula-???
 
Untested:

=SUMPRODUCT(((TRIM($A$8:$A46)="A")
+(TRIM($A$8:$A46)="B")
+(TRIM($A$8:$A46)="C")
+(TRIM($A$8:$A46)="D"))
*((TRIM($B$8:$B46)="E")),
indirect(refr(rng1,rng2)))

(change rng1 and rng2 to the addresses you need)



PBcorn wrote:

I have a UDF (see bottom) which finds a particular col header then looks up a
range in that column. I want to pass this range to a sumproduct formula in
another cell:

=SUMPRODUCT(((TRIM($A$8:$A46)="A")+(TRIM($A$8:$A46 )="B")+(TRIM($A$8:$A46)="C")+(TRIM($A$8:$A46)="D") )*((TRIM($B$8:$B46)="E")),C$8:C46)

So for the above, C$8:C46 would be replaced by REFR()

REFR works fine, returning the correct range reference, but when i put it in
the sumproduct formula a value error results.

Please help

Thanks

Function REFR(Product As Range, Colhead As Range)

Application.Volatile

Dim c As Range
Dim productstring As String
Dim cs As Integer
Dim rs As Integer
Dim sumthese As Variant

productstring = Product.Value

For Each c In Colhead.Cells

If Trim(c) = Trim(productstring) Then

cs = c.Column
rs = c.Row + 1

Set sumthese = Range(Cells(rs, cs), Cells(rs + 35, cs))

Else: End If

Next c

REFR = sumthese.Address(rowabsolute:=False, columnabsolute:=False)

End Function


--

Dave Peterson


All times are GMT +1. The time now is 08:23 AM.

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