Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

SumProduct With Math Symbols

Posted on 2009-05-12
7
Medium Priority
?
842 Views
Last Modified: 2012-05-06
Is there a way to use a validated cell to show math symbols to then be used in a Sumproduct formula.  It should be just a matter of getting the apostrophes straight, or so I am thinking.

I have attached a test spreadsheet showing what the answer should be if I just use the "<" and ">=" in the formula, but can not figure out the right way to use the symbols when in a cell.
Sumproduct-Criteria.xls
0
Comment
Question by:DougDodge
  • 4
  • 3
7 Comments
 
LVL 10

Expert Comment

by:Jon von der Heyden
ID: 24363938
You can't reference those 'symbols' indirectly.  You can however use a macro to write the formula for you.  Right click the sheet name > View Code and paste this into the Editor.  Close the editor again.  The formula should update each time you change a symbol or criteria.
Private Sub Worksheet_Change(ByVal Target As Range)
 
Dim strFormula As String
 
If Target.Address(0, 0) = "B2" Or Target.Address(0, 0) = "C2" Or _
    Target.Address(0, 0) = "E2" Or Target.Address(0, 0) = "F2" Then
    
    strFormula = "=SUMPRODUCT((Column1" & Range("B2") & Range("C2") & ")*(Column1" & Range("E2") & Range("F2") & "))"
    
    Range("H2").Formula = strFormula
 
End If
 
End Sub

Open in new window

0
 

Author Comment

by:DougDodge
ID: 24364293
This is a good solution, but can it be made to handle a range rather than a single cell?  Please have a look at the attached.
Sumproduct-Criteria-2.xls
0
 
LVL 10

Expert Comment

by:Jon von der Heyden
ID: 24364626
Try this;
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
Dim strFormula As String
Dim rngIsect As Range
Dim lngLastRow As Long
 
lngLastRow = Range("B" & Rows.Count).End(xlUp).Row
 
Set rngIsect = Union(Range("B2:C" & lngLastRow), Range("E2:F" & lngLastRow))
 
If Intersect(rngIsect, Target) Is Nothing Then Exit Sub
    
    strFormula = "=SUMPRODUCT((Column1" & Cells(Target.Row, "B") & Cells(Target.Row, "C") _
        & ")*(Column1" & Cells(Target.Row, "E") & Cells(Target.Row, "F") & "))"
    
    Cells(Target.Row, "H").Formula = strFormula
 
End Sub

Open in new window

0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:DougDodge
ID: 24365555
The problem I face is how to adjust your coding for my application.  The range has to be restricted to F20 to I25 and the formula created must contain a double apostrophe in it.  This seems to be the issue now, as I can get your formula to work, but have an issue over the syntax of the apostrophes.  Please see attached.
SumproductTest2.xls
0
 
LVL 10

Expert Comment

by:Jon von der Heyden
ID: 24365930
The thing with quotes is that you need to wrap them in quotes to, see below:
Notice < ""Task Dependent"" >

Option Explicit
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
'Checks for Math Symbol or criteria changes and changes formulas.
Dim strFormula As String
Dim rngIsect As Range
Dim lngLastRow As Long
 
lngLastRow = Range("F" & Rows.Count).End(xlUp).Row
 
Set rngIsect = Union(Range("F20:G" & lngLastRow), Range("H20:I" & lngLastRow))
 
'SUMPRODUCT((Sched1E="Task Dependent")*(Sched1S>G21)*(Sched1S<=I21))
 
If Intersect(rngIsect, Target) Is Nothing Then Exit Sub
    strFormula = "=SUMPRODUCT((Sched1E=""Task Dependent"")*(Sched1S" & Cells(Target.Row, "F") & Cells(Target.Row, "G") & ")*(Sched1S" & Cells(Target.Row, "H") & Cells(Target.Row, "I") & "))"
    Cells(Target.Row, "L").Formula = strFormula
 
End Sub

Open in new window

0
 
LVL 10

Accepted Solution

by:
Jon von der Heyden earned 1000 total points
ID: 24365966
Also, looking at your latest scenario rngIsect can be hardcoded:
Option Explicit
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
'Checks for Math Symbol or criteria changes and changes formulas.
Dim strFormula As String
Dim rngIsect As Range
 
Set rngIsect = Union(Range("F21:G24"), Range("H20:I25"))
 
'SUMPRODUCT((Sched1E="Task Dependent")*(Sched1S>G21)*(Sched1S<=I21))
 
If Intersect(rngIsect, Target) Is Nothing Then Exit Sub
    strFormula = "=SUMPRODUCT((Sched1E=""Task Dependent"")*(Sched1S" & Cells(Target.Row, "F") & Cells(Target.Row, "G") & ")*(Sched1S" & Cells(Target.Row, "H") & Cells(Target.Row, "I") & "))"
    Cells(Target.Row, "L").Formula = strFormula
 
End Sub

Open in new window

0
 

Author Closing Comment

by:DougDodge
ID: 31580502
Excellent, this worked perfectly.
Thanks....
0

Featured Post

Configuration Guide and Best Practices

Read the guide to learn how to orchestrate Data ONTAP, create application-consistent backups and enable fast recovery from NetApp storage snapshots. Version 9.5 also contains performance and scalability enhancements to meet the needs of the largest enterprise environments.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Freeze panes is an option within all variants of Excel to enable parts of a sheet to remain stationary when the cursor is in another part of the sheet. This is a very useful feature which is overlooked or under used.
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
This Micro Tutorial demonstrates how to create Excel charts: column, area, line, bar, and scatter charts. Formatting tips are provided as well.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

885 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question