Solved

# SumProduct With Math Symbols

Posted on 2009-05-12
824 Views
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
Question by:DougDodge
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4
• 3

LVL 10

Expert Comment

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 _

strFormula = "=SUMPRODUCT((Column1" & Range("B2") & Range("C2") & ")*(Column1" & Range("E2") & Range("F2") & "))"

Range("H2").Formula = strFormula

End If

End Sub
``````
0

Author Comment

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

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
``````
0

Author Comment

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

ID: 24365930
The thing with quotes is that you need to wrap them in quotes to, see below:

``````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))

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
``````
0

LVL 10

Accepted Solution

Jon von der Heyden earned 250 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"))

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
``````
0

Author Closing Comment

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

## Featured Post

Question has a verified solution.

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

### Suggested Solutions

This collection of functions covers all the normal rounding methods of just about any numeric value.
How to get Spreadsheet Compare 2016 working with the 64 bit version of Office 2016
Graphs within dashboards are meant to be dynamic, representing data from a period of time that will change each time the dashboard is updated with new data. Rather than update each graph to point to a different set within a static set of data, t…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
###### Suggested Courses
Course of the Month3 days, 12 hours left to enroll