ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   sumproduct in VBA (https://www.excelbanter.com/excel-programming/344571-sumproduct-vba.html)

xlcharlie

sumproduct in VBA
 
I want to use the SUMPRODUCT function in my code. The function, as I would
write it in an Excel cell, is as follows.

=IF(SUMPRODUCT((series=Sheet1!$A2)*(status="Open") )=0,"Done","Pending Action")

Where "series" and "status" are ranges of cells (both single column, 10,000
rows) that have been named.

I've tried using the follow variations of VB code, but I keep getting a
run-time error '13' message: "Type mismatch."

Application.WorksheetFunction.SumProduct((Range("s eries") = Cells(1,
1).Value) * (Range("status") = "Open"))

Application.WorksheetFunction.SumProduct((Array("s eries") = Cells(1,
1).Value) * (Array("status") = "Open"))

I've stopped iterating through other possible variations to save myself time
and frustration. Does anyone know the correct arguments to get the desired
result? My aim is to look at a large tabular dataset, determine if the
"status" of any items corresponding to a specified identifier is "open", then
execute other code accordingly. So if sumproduct = 0 do x, else do y.
Thanks in advance for your help!

Harald Staff

sumproduct in VBA
 
Hi

I'd have my code enter the formula into a spare cell, calculate, read &
remember the result and delete the formula.

HTH. Best wishes Harald

"xlcharlie" skrev i melding
...
I want to use the SUMPRODUCT function in my code. The function, as I

would
write it in an Excel cell, is as follows.

=IF(SUMPRODUCT((series=Sheet1!$A2)*(status="Open") )=0,"Done","Pending

Action")

Where "series" and "status" are ranges of cells (both single column,

10,000
rows) that have been named.

I've tried using the follow variations of VB code, but I keep getting a
run-time error '13' message: "Type mismatch."

Application.WorksheetFunction.SumProduct((Range("s eries") = Cells(1,
1).Value) * (Range("status") = "Open"))

Application.WorksheetFunction.SumProduct((Array("s eries") = Cells(1,
1).Value) * (Array("status") = "Open"))

I've stopped iterating through other possible variations to save myself

time
and frustration. Does anyone know the correct arguments to get the

desired
result? My aim is to look at a large tabular dataset, determine if the
"status" of any items corresponding to a specified identifier is "open",

then
execute other code accordingly. So if sumproduct = 0 do x, else do y.
Thanks in advance for your help!




Bob Phillips[_6_]

sumproduct in VBA
 
Just evaluate it

myVal = Evaluate("=SUMPRODUCT((series=Sheet1!$A2)*(status= ""Open""))")

--

HTH

RP
(remove nothere from the email address if mailing direct)


"xlcharlie" wrote in message
...
I want to use the SUMPRODUCT function in my code. The function, as I

would
write it in an Excel cell, is as follows.

=IF(SUMPRODUCT((series=Sheet1!$A2)*(status="Open") )=0,"Done","Pending

Action")

Where "series" and "status" are ranges of cells (both single column,

10,000
rows) that have been named.

I've tried using the follow variations of VB code, but I keep getting a
run-time error '13' message: "Type mismatch."

Application.WorksheetFunction.SumProduct((Range("s eries") = Cells(1,
1).Value) * (Range("status") = "Open"))

Application.WorksheetFunction.SumProduct((Array("s eries") = Cells(1,
1).Value) * (Array("status") = "Open"))

I've stopped iterating through other possible variations to save myself

time
and frustration. Does anyone know the correct arguments to get the

desired
result? My aim is to look at a large tabular dataset, determine if the
"status" of any items corresponding to a specified identifier is "open",

then
execute other code accordingly. So if sumproduct = 0 do x, else do y.
Thanks in advance for your help!




xlcharlie

sumproduct in VBA
 
Works perfectly! Thanks.

"Bob Phillips" wrote:

Just evaluate it

myVal = Evaluate("=SUMPRODUCT((series=Sheet1!$A2)*(status= ""Open""))")

--

HTH

RP
(remove nothere from the email address if mailing direct)


"xlcharlie" wrote in message
...
I want to use the SUMPRODUCT function in my code. The function, as I

would
write it in an Excel cell, is as follows.

=IF(SUMPRODUCT((series=Sheet1!$A2)*(status="Open") )=0,"Done","Pending

Action")

Where "series" and "status" are ranges of cells (both single column,

10,000
rows) that have been named.

I've tried using the follow variations of VB code, but I keep getting a
run-time error '13' message: "Type mismatch."

Application.WorksheetFunction.SumProduct((Range("s eries") = Cells(1,
1).Value) * (Range("status") = "Open"))

Application.WorksheetFunction.SumProduct((Array("s eries") = Cells(1,
1).Value) * (Array("status") = "Open"))

I've stopped iterating through other possible variations to save myself

time
and frustration. Does anyone know the correct arguments to get the

desired
result? My aim is to look at a large tabular dataset, determine if the
"status" of any items corresponding to a specified identifier is "open",

then
execute other code accordingly. So if sumproduct = 0 do x, else do y.
Thanks in advance for your help!





xlcharlie

sumproduct in VBA
 
Thanks Harald. I was aware of that option, but looking for a way to do it in
code alone. Turns out, the evaluate function allows you to do what you were
suggesting, but in code alone:

myVal = Evaluate("=SUMPRODUCT((series=Sheet1!$A2)*(status= ""Open""))")

Thanks again for your help.

"Harald Staff" wrote:

Hi

I'd have my code enter the formula into a spare cell, calculate, read &
remember the result and delete the formula.

HTH. Best wishes Harald

"xlcharlie" skrev i melding
...
I want to use the SUMPRODUCT function in my code. The function, as I

would
write it in an Excel cell, is as follows.

=IF(SUMPRODUCT((series=Sheet1!$A2)*(status="Open") )=0,"Done","Pending

Action")

Where "series" and "status" are ranges of cells (both single column,

10,000
rows) that have been named.

I've tried using the follow variations of VB code, but I keep getting a
run-time error '13' message: "Type mismatch."

Application.WorksheetFunction.SumProduct((Range("s eries") = Cells(1,
1).Value) * (Range("status") = "Open"))

Application.WorksheetFunction.SumProduct((Array("s eries") = Cells(1,
1).Value) * (Array("status") = "Open"))

I've stopped iterating through other possible variations to save myself

time
and frustration. Does anyone know the correct arguments to get the

desired
result? My aim is to look at a large tabular dataset, determine if the
"status" of any items corresponding to a specified identifier is "open",

then
execute other code accordingly. So if sumproduct = 0 do x, else do y.
Thanks in advance for your help!






All times are GMT +1. The time now is 09:12 AM.

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