The Only Excel Trick You Need for Extracting Data from Cells
By Sarah Mitchell
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:
A2
A3
A4
A5
A6
A7
A8
A9
A10
PO#78921 - Acme Corp - $45,200 - 2024-03-15
Ref: INV-4472 | BetaTech LLC | Paid Apr 2
[ID:99201] Zenith Labs — Invoice Total: €18,750
Order#JX-8821 — GlobalSoft Inc — Due: 2024-05-30
#QTR2-2024 | Orion Dynamics | $32,990.50
INVOICE: LUM-7743 — StellarWorks Ltd — 2024/04/11
[REF: T-5581] Nuvora Group — ¥2,140,000 — Paid
PO 2291-B — Veridian Systems — $14,300 — Sent Mar 28
Inv 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.
Step
Action
Result
Shortcut
1
In B2, enter: =FIND("$",A2)
Returns 17 — position of "$" in A2
Alt+M, V (to open Formula Auditing → Evaluate Formula)
2
Now get the number starting at that position: =MID(A2,FIND("$",A2),10)
Returns $45,200 - 2024-03-15
F9 (to evaluate part of formula in edit mode)
3
Strip non-numeric characters except "." and "-": =SUBSTITUTE(SUBSTITUTE(MID(A2,FIND("$",A2),10),"$",""),"-","")
Gives 45,200 2024/03/15 — still messy
Ctrl+Z (undo — because you’ll want it after step 4)
4
Use 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)
5
Final formula in B2: =VALUE(SUBSTITUTE(LEFT(MID(A2,FIND("$",A2),20),SEARCH(" ",MID(A2,FIND("$",A2),20))-1),",",""))
Returns 45200 — clean number
Ctrl+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:
B2
B3
B4
B5
B6
B7
B8
B9
B10
45200
0
18750
0
32990.5
0
2140000
14300
8650
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:
Fill down — should show TRUE for every valid result
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.