Excel Goal Seek finds the input value that makes a formula output match your target. But if your target cell contains a hardcoded number—not a formula—it flat-out refuses to run.
The Problem
You’re forecasting Q2 revenue for Acme Corp. Sales reps submit forecasts in column C. Your total forecast (C12) feeds into a profit model in F5: =C12*0.18-24500. You need $62,000 net profit—but right now F5 shows $49,732. You know the margin rate and fixed costs are locked. Only C12 can change.
Most people try editing C12 manually—tweaking, recalculating, guessing. They overshoot. Then undershoot. Then lose 12 minutes.
| Rep Name | Q1 Actual ($) | Q2 Forecast ($) | Projected Profit ($) |
|---|---|---|---|
| Sarah Chen | $124,500 | $132,000 | $49,732 |
| Diego Mendoza | $98,200 | $105,500 | $49,732 |
| Priya Patel | $142,800 | $151,200 | $49,732 |
| James Wu | $87,600 | $93,400 | $49,732 |
| Total | $453,100 | $482,100 | $49,732 |
Note: All rows show identical profit because F5 pulls only from C12—the sum of C2:C5. That’s the real bottleneck. And yes, F5 is =C12*0.18-24500. If you replace that with =49732, Goal Seek dies before it starts.
The Solution
- Select cell F5 — the formula result you want to change.
- Go to Data → What-If Analysis → Goal Seek. Or press Alt + A + W + G.
- In the dialog box:
- Set cell: F5 (auto-filled if you selected it first)
- To value: 62000
- By changing cell: C12
- Click OK. Excel runs ~100 iterations max. It finds C12 = $477,222.22.
That’s it. No guesswork. No manual edits. Goal Seek backs into the input that satisfies your output condition.
| Rep Name | Q1 Actual ($) | Q2 Forecast ($) | Projected Profit ($) |
|---|---|---|---|
| Sarah Chen | $124,500 | $132,000 | $62,000 |
| Diego Mendoza | $98,200 | $105,500 | $62,000 |
| Priya Patel | $142,800 | $151,200 | $62,000 |
| James Wu | $87,600 | $93,400 | $62,000 |
| Total | $453,100 | $477,222 | $62,000 |
Surprising tip: Goal Seek *only* changes one cell. Even if your formula references ten cells, it picks just one to adjust—and that cell must be directly referenced, no indirects like INDIRECT() or OFFSET(). Try changing C12 to =SUM(INDIRECT("C2:C5")), and Goal Seek throws #REF!.
Going Further
You can chain Goal Seek calls using macros—but don’t. Use Solver instead for multiple variables.
Need sensitivity? Run Goal Seek across a range: Type targets in D2:D6 (e.g., $55,000 to $75,000), then use this macro snippet:
For i = 2 To 6
Range("F5").GoalSeek Goal:=Cells(i, 4).Value, ChangingCell:=Range("C12")
Cells(i, 5).Value = Range("C12").Value
Next i
Or simulate it manually: In E2, enter =FORMULATEXT(F5) to verify F5 stays formula-based. Then paste values from C12 into E2:E6 as you test.
Goal Seek works with dates too—if your formula outputs days or serial numbers. Example: Cell G3 contains =B2-A2 (duration in days). Set G3 to 90, change A2 to find required start date.
When NOT to Use This
- No solution exists. If your formula is
=SQRT(C12)and you ask for -5, Goal Seek returns “Solver could not find a feasible solution.” It won’t warn you gently—it just gives up. - Circular references are active. Turn them off (File > Options > Formulas > uncheck 'Enable iterative calculation') or Goal Seek hangs.
- The changing cell contains text or a date formatted as text. Even if it looks like “477222”, Excel sees text. Use
=VALUE(C12)in your target formula to force conversion—or re-enter as number. - You’re trying to hit two targets at once. Goal Seek solves one equation, one unknown. Not two equations. Not inequalities. Not ranges. Just y = f(x), solve for x.
Also: never use Goal Seek on merged cells. Never on cells inside tables with structured references like [@[Forecast]]. Always use plain A1-style addresses.
Keyboard Shortcuts
| Action | Shortcut | Notes |
|---|---|---|
| Open Goal Seek | Alt + A + W + G | Must be on Windows; Mac uses different sequences |
| Recalculate sheet (after Goal Seek) | F9 | Useful if automatic calc is off |
| Edit formula in cell | F2 | Verify target cell contains a real formula |
| Toggle formula view | Ctrl + ` | See all formulas at once—spot hardcoded values fast |