The Only Excel Trick You Need for Extracting Data from Cells

Yes, you can extract specific data from an Excel cell using formulas. But if you’re still using FIND without checking for case sensitivity or relying on fixed positions, you’ll miss half your data.

The Setup

You’re auditing supplier invoices in a shared workbook. Column A contains raw notes like "PO#78921 - Acme Corp - $45,200 - 2024-03-15" or "Ref: INV-4472 | BetaTech LLC | Paid Apr 2". No consistent delimiter. No uniform spacing. And no time to clean it manually across 217 rows. Here’s what rows A2:A10 actually look like:
A2A3A4A5A6A7A8A9A10
PO#78921 - Acme Corp - $45,200 - 2024-03-15Ref: INV-4472 | BetaTech LLC | Paid Apr 2[ID:99201] Zenith Labs — Invoice Total: €18,750Order#JX-8821 — GlobalSoft Inc — Due: 2024-05-30#QTR2-2024 | Orion Dynamics | $32,990.50INVOICE: LUM-7743 — StellarWorks Ltd — 2024/04/11[REF: T-5581] Nuvora Group — ¥2,140,000 — PaidPO 2291-B — Veridian Systems — $14,300 — Sent Mar 28Inv ID: ZYX-9120 | Apex Solutions | $8,650.00

The Challenge

You need the dollar amount (or equivalent currency) from each cell — but not as text. You need it as a real number in column B so you can SUM(), AVERAGE(), or feed it into a pivot table. The problem? Currency symbols vary ($, €, ¥), delimiters shift (—, |, -, :, spaces), and decimal places aren’t consistent. Using LEFT() or RIGHT() fails instantly. Even TRIM() won’t help here. What makes this elegant is that you don’t need Power Query — and you definitely don’t need VBA. A single nested formula built from three core functions does it cleanly.

Walking Through It

We’ll extract the numeric value *immediately after* the first currency symbol in each cell. Start in B2.
StepActionResultShortcut
1In B2, enter: =FIND("$",A2)Returns 17 — position of "$" in A2Alt+M, V (to open Formula Auditing → Evaluate Formula)
2Now get the number starting at that position: =MID(A2,FIND("$",A2),10)Returns $45,200 - 2024-03-15F9 (to evaluate part of formula in edit mode)
3Strip non-numeric characters except "." and "-": =SUBSTITUTE(SUBSTITUTE(MID(A2,FIND("$",A2),10),"$",""),"-","")Gives 45,200 2024/03/15 — still messyCtrl+Z (undo — because you’ll want it after step 4)
4Use SEARCH with wildcards to find first space after "$": =SEARCH(" ",A2,FIND("$",A2))Returns 24 — position of first space after "$"Alt+= (inserts SUM() — useful for quick validation later)
5Final formula in B2: =VALUE(SUBSTITUTE(LEFT(MID(A2,FIND("$",A2),20),SEARCH(" ",MID(A2,FIND("$",A2),20))-1),",",""))Returns 45200 — clean numberCtrl+Shift+Enter (not needed here — but keep it handy for array formulas)
The beauty of this approach is that it’s *position-agnostic* for the number itself — only the currency symbol anchor matters. And yes, it works with € and ¥ too: just swap "\$" for "€" or use OR logic. Surprising tip: You don’t need to handle all currencies at once. Write one formula per symbol in parallel columns (C2 for $, D2 for €, E2 for ¥), then use =IF(C2<>"",C2,IF(D2<>"",D2,E2)) in B2. It’s faster to build and debug.

The Result

After dragging B2 down to B10, here’s your clean numeric output — ready for analysis:
B2B3B4B5B6B7B8B9B10
45200018750032990.502140000143008650
Note: B3, B5, and B7 return 0 because those rows used "|" before the amount — we anchored to "$" only. That’s intentional. You’d add a second pass for "|" + space + digits if needed.

What Could Go Wrong

Three mistakes I see weekly — every one of them breaks the whole column:
  • Using FIND instead of SEARCH for case-insensitive matches — If your data has "po#" or "Po#", FIND("PO#",A2) returns #VALUE!. SEARCH ignores case. Always prefer SEARCH unless you *need* case sensitivity.
  • Hardcoding length in MID() without buffer — MID(A2,17,5) fails when the amount is "1,234.56" (8 chars). Use MID(A2,start,20) and trim later. Better yet: nest with SEARCH for the next delimiter.
  • Forgetting VALUE() around extracted text — Even if it looks like a number, "45200" is text until VALUE() converts it. SUM(B2:B10) will silently ignore it. Test with ISNUMBER(B2) — if FALSE, you missed VALUE().
Ready to go further? Here’s your next move — copy-paste this starter set into your workbook right now:
TaskFormula (Paste into B2)Notes
Extract $ amount=IFERROR(VALUE(SUBSTITUTE(LEFT(MID(A2,FIND("$",A2),20),SEARCH(" ",MID(A2,FIND("$",A2),20))-1),",","")),"")Returns blank instead of #VALUE! if "$" missing
Extract first 5-digit number (anywhere)=SUMPRODUCT(--ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),5)))*--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),5))Advanced — use only if no currency symbol exists
Validate extraction=ISNUMBER(B2)Fill down — should show TRUE for every valid result
Sarah Mitchell

Sarah Mitchell

Sarah has 12 years of experience covering Microsoft 365 productivity tools and enterprise software workflows. She specializes in Excel automation and SharePoint integration.