What Most People Miss About How to Refresh Excel Formulas

It’s 3:12 PM on a Tuesday. You just pasted fresh sales figures from your CRM into Sheet2, updated the lookup table in Sheet1, and hit Save. But the dashboard on Dashboard!A1:F20 still shows last week’s numbers — even though every formula references those ranges. You press F9. Nothing changes. You close and reopen. Still wrong. Your boss walks by in 90 seconds.

The Setup

You’re maintaining a quarterly regional sales tracker for Alibaba’s APAC channel team. Data flows from three sources: a live SQL export (copied into RawData!A1:D11), a manually maintained product catalog (Catalog!A1:C8), and a weekly commission rate table (Rates!A1:B6). The main dashboard pulls everything using XLOOKUP, SUMIFS, and dynamic array spill ranges.

RegionProduct IDUnits SoldDate
Tokyo MetroPRD-7821422024-03-15
Seoul MetroPRD-419872024-03-16
Singapore CBDPRD-7822032024-03-17
Sydney HarbourPRD-205592024-03-18
Melbourne DocklandsPRD-4191122024-03-18
Bangkok SilomPRD-7821762024-03-19
Hong Kong CentralPRD-205942024-03-20
Taipei XinyiPRD-7821312024-03-21
Kuala Lumpur KLCCPRD-419672024-03-22
Manila MakatiPRD-2051082024-03-22

The Challenge

You need formulas to reflect new data the *instant* it lands — not after closing and reopening, not after clicking through five menus, and definitely not after waiting for Excel to ‘decide’ it’s time to recalculate. The problem isn’t that Excel is broken. It’s that Excel has *three distinct recalculation modes*, and most users only know one of them. Worse: volatile functions like TODAY(), OFFSET(), or INDIRECT() can silently break dependency chains — meaning your XLOOKUP in Dashboard!C2 might point to Catalog!B2, but if Catalog!B2 contains =INDIRECT("Rates!B"&MATCH(A2,Rates!A:A,0)), Excel won’t flag that as a dependency. So when Rates!B3 changes from 0.08 to 0.085, Dashboard!C2 stays frozen at 8%.

The beauty of this approach is that it gives you surgical control — no more guessing whether F9 actually did anything.

Walking Through It

We’ll fix the commission calculation in Dashboard!D2:D11, which currently reads:
=XLOOKUP(B2,RawData!B:B,RawData!C:C,0)*XLOOKUP(B2,Catalog!A:A,Catalog!C:C,0)

But this fails because Catalog!C:C contains volatile formulas referencing Rates!B1:B6 — and Excel doesn’t track those indirect links.

Step 1: Diagnose the actual calculation mode

Go to Formulas → Calculation Options. If it says “Automatic Except for Data Tables”, your formulas *won’t* update when external data changes — only when you edit cells directly. That’s likely your first culprit. Press Alt+M+X to open the Calculation Options menu instantly. Toggle to “Automatic”.

Step 2: Break the volatile chain

In Catalog!C2, instead of =INDIRECT("Rates!B"&MATCH(A2,Rates!A:A,0)), replace it with:
=INDEX(Rates!B:B,MATCH(A2,Rates!A:A,0))

This removes INDIRECT — and now Excel sees Rates!B:B as a true dependency. Change C2, then drag down to C8. You’ll see no visual change — but the dependency graph just got honest.

Step 3: Force full dependency rebuild

Select any cell in the Dashboard sheet. Press Ctrl+Alt+F9. This recalculates *all* open workbooks — including rebuilding dependency trees, not just values. Watch the status bar: it’ll say “Calculating cells…” for 1–2 seconds, even if nothing looks different.

Step 4: Verify with a dirty test

Change Rates!B4 (currently 0.075) to 0.078. Now press F9. Dashboard!D4 updates instantly. Before? It didn’t. Why? Because F9 only recalculates *dirty* cells — and without INDEX, Excel never marked D4 as dependent on Rates!B4.

MethodTime for 10K rowsAccuracyDifficulty
F9 (recalculate active sheet)0.2 sec❌ Only if dependencies are cleanEasy
Ctrl+Alt+F9 (full recalc)1.8 sec✅ Rebuilds all dependenciesEasy
Alt+M+X → Manual → Alt+M+X → Automatic0.1 sec + 1 sec delay⚠️ Fixes mode, but not broken linksMedium
Editing any cell in a formula chain (e.g., typing 'x' then deleting)0.3 sec✅ Forces local recalcEasy but tedious

The Result

After applying Ctrl+Alt+F9 and fixing the INDEX formula, Dashboard!D2:D11 now reflects real-time commission payouts — no lag, no guesswork. Here’s what it looks like post-refresh:

RegionProduct IDUnits SoldCommission RateTotal Commission
Tokyo MetroPRD-7821428.5%$12,070
Seoul MetroPRD-419877.8%$6,786
Singapore CBDPRD-7822038.5%$17,255
Sydney HarbourPRD-205597.2%$4,248
Melbourne DocklandsPRD-4191127.8%$8,736
Bangkok SilomPRD-7821768.5%$14,960
Hong Kong CentralPRD-205947.2%$6,768
Taipei XinyiPRD-7821318.5%$11,135
Kuala Lumpur KLCCPRD-419677.8%$5,226
Manila MakatiPRD-2051087.2%$7,776

What Could Go Wrong

Three mistakes I’ve debugged in live client files — each took under 2 minutes to spot once you knew where to look:

Mistake #1: “Auto” mode is lying to you

You see “Automatic” selected in Formulas → Calculation Options — but your workbook has Calculation Mode = Manual buried in VBA. Check with Alt+F11 → ThisWorkbook → Properties → CalculateBeforeSave = False. If that’s unchecked, Excel skips recalc on save — and won’t warn you. Fix: Set it to True, or delete the line entirely.

Mistake #2: External links set to “Update values only”

Your formula is ='[SalesQ1.xlsx]Sheet1'!$B$5 — but Excel is configured to pull *only cached values*, not live links. Go to Data → Queries & Connections → Workbook Connections → Right-click connection → Properties → Uncheck “Refresh data when opening the file” and “Enable background refresh”. Then click “Edit Links” (under Data tab) and choose “Startup Prompt → Let users choose to update or not”. Now Excel asks — and forces a real fetch.

Mistake #3: Array formulas hiding in plain sight

You used Ctrl+Shift+Enter years ago to create an array formula in E2:E10. Excel 365 treats it as legacy — and won’t spill or recalc unless you convert it. Select E2, press F2, then Ctrl+Shift+Enter again. If you see {=SUM(IF(...))}, it’s stuck. Replace with =SUMIFS(...) or use LET() to isolate logic. Bonus tip: Press Ctrl+` (backtick) to toggle formula view — scan for curly braces.

Your Next Step — Do This Now

Open your most critical workbook. Run this 30-second audit:

ActionShortcut / PathWhat It Checks
Check calculation modeAlt+M+XIs it truly “Automatic”?
Scan for volatile functionsCtrl+F → “TODAY(“, “OFFSET(“, “INDIRECT(“Replace with INDEX/MATCH or LET
Force full rebuildCtrl+Alt+F9Resets dependency tree — try it now
Verify external linksData → Edit LinksAre they set to “Automatic” or “Manual”?
Lisa Anderson

Lisa Anderson

Lisa is a certified Microsoft trainer who writes step-by-step guides for Power Automate