?
Solved

Excel 2007 Goal Seek Formula

Posted on 2010-11-17
9
Medium Priority
?
1,298 Views
Last Modified: 2012-06-27
Hello,

Please review the attached code.  The goal seek formula is making the adjustment in cell E64.  I need to set up a limit in which the amount in E64 that goal seek recommends should not be less than 0 or greater than the amount in cell I64.  If the amount does not fall within this parameter an error message appears stating "Amount Does Not Fall Within Required Parameters.  Please Try Again".

Any suggestions on how to make this happen?

Thanks!


Range("E74").GoalSeek Goal:=Range("H68"), ChangingCell:=Range("E64")

Open in new window

0
Comment
Question by:Escanaba
[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
  • Learn & ask questions
  • 4
  • 4
9 Comments
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34158648
Range("E64").Value = WorksheetFunction.Median(0, Range("E64").Value, Range("I64").Value)
0
 
LVL 1

Author Comment

by:Escanaba
ID: 34158818
So for the entire string its this:
Range("E74").GoalSeek Goal:=Range("H68"), ChangingCell:=Range("E64").Value = WorksheetFunction.Median(0, Range("E64").Value, Range("I64").Value)

If so its bugging stating reference not valid.
0
 
LVL 1

Author Comment

by:Escanaba
ID: 34158847
Here is the full code:

Private Sub CommandButton2_Click()
    With Application
       .DisplayAlerts = False
       .EnableEvents = False
       .ScreenUpdating = False
      Application.Calculation = xlCalculationManual
    End With
   
     
    Range("E74").GoalSeek Goal:=Range("H68"), ChangingCell:=Range("E64").Value = WorksheetFunction.Median(0, Range("E64").Value, Range("I64").Value)
   
   
    With Application
    .DisplayAlerts = True
    .EnableEvents = True
    .ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    End With
 
End Sub
0
Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34158894
No. My code was for after the value was put in E64. Like this: (You could use a different cell for the final value)
Range("E74").GoalSeek Goal:=Range("H68"), ChangingCell:=Range("E64")

Range("E64").Value = WorksheetFunction.Median(0, Range("E64").Value, Range("I64").Value)

Open in new window

0
 
LVL 81

Expert Comment

by:byundt
ID: 34158910
Solver can handle multiple constraints and changing cells, but Goal Seek requires a single criterion (minimum, maximum or specific value).

From the description of the problem, the final solution might be:
=MAX(0,MIN(I64,E64))                 the Goal Seek result should be between 0 and I64.

You would then run Goal Seek using E64 same as previously, then replace the value found by Goal Seek with the result of the MAX/MIN formula.
0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34158945
byundt, your answer is the same as mine except the median function does the min/max in one step.
0
 
LVL 1

Author Comment

by:Escanaba
ID: 34159037
Got it & thank you.  Any recommendations on the 2nd part of my original question regarding generating an error message so the end user knows they've exceeded the parameters?  As it stands, nothing updates which is good but doesnt tell them why.
0
 
LVL 37

Accepted Solution

by:
TommySzalapski earned 2000 total points
ID: 34159083
Then you'd need something like this (and the median trick isn't as useful).
Range("E74").GoalSeek Goal:=Range("H68"), ChangingCell:=Range("E64")

If Range("E64").Value <0 Then
  MsgBox "Came out less than 0, changed to 0"
  Range("E64").Value = 0
End if
If Range("E64").Value > Range("I64").Value Then
  MsgBox "Came out greater than " & Range("I64").Value & ", changed to " & Range("I64").Value
  Range("E64").Value = Range("I64").Value
End If

Open in new window

0
 
LVL 1

Author Closing Comment

by:Escanaba
ID: 34159162
Appreciate the assistance.  Thank you.
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

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

When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
With User Account Control (UAC) enabled in Windows 7, one needs to open an elevated Command Prompt in order to run scripts under administrative privileges. Although the elevated Command Prompt accomplishes the task, the question How to run as script…
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…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

777 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