FIND Function

Excel Functions › Text

All Excel versions Text Case-sensitive

The Excel FIND function returns the position of one text string inside another — "where is the hyphen?" — counted from 1. It is case-sensitive and takes wildcards literally, which makes it the precise twin of SEARCH. Alone it answers "is X in here, and where?"; feeding LEFT, MID, and RIGHT, it powers nearly every classic text-extraction formula.


Quick answer: to find where the hyphen sits in A2:
=FIND("-", A2)
"TX-0042" returns 3. If the text isn’t there — with this exact capitalization — FIND returns #VALUE!, so wrap risky lookups in IFERROR: =IFERROR(FIND("-", A2), 0).

Syntax

=FIND(find_text, within_text, [start_num])
ArgumentDescription
find_textRequiredThe text to locate. Matched exactly, including case. An empty string returns 1.
within_textRequiredThe string to look inside.
start_numOptionalPosition to start looking from (default 1). Use it to skip past an earlier occurrence and find the next one.

Available in: every version of Excel. Three rules set FIND apart: it is case-sensitive ("excel" will not match "Excel"), it treats ? and * as literal characters, not wildcards, and it returns #VALUE! when the text isn’t found. Need the opposite behavior? That’s SEARCH.

Locate a character’s position

These codes have prefixes of different lengths, so a fixed LEFT(A2, 2) fails. FIND measures where the hyphen actually is, and LEFT uses it:

ABC
1CodeHyphen atPrefix
2TX-00423TX
3OKLA-11875OKLA
4NM-09163NM
=FIND("-", A2) // B2: position of the hyphen, counting from 1
=LEFT(A2, FIND("-", A2) - 1) // C2: everything before it

The third argument finds later occurrences — start looking just past the first hit:

=FIND("-", A2, FIND("-", A2) + 1) // position of the 2nd hyphen

Try it: FIND vs SEARCH, live

Live demo

Search inside Excel sale: 20% off excel-2026.xlsx. Flip between FIND and SEARCH to see case-sensitivity and wildcards change the answer.

FIND inside extraction formulas

FIND’s real job is feeding positions to the extraction functions. The big three patterns:

=LEFT(A2, FIND(" ", A2) - 1) // first word - "Sarah Connor" becomes "Sarah"
=RIGHT(A2, LEN(A2) - FIND(" ", A2)) // everything after the first space
=MID(A2, FIND("-", A2) + 1, FIND("-", A2, FIND("-", A2) + 1) - FIND("-", A2) - 1) // between the 1st and 2nd hyphen

As a case-sensitive "does it contain?" test — here, flag codes carrying an uppercase "R" flag but not a lowercase "r":

=IF(ISNUMBER(FIND("R", A2)), "Rush order", "Standard")

The ISNUMBER wrapper is essential: FIND errors rather than returning 0 on a miss, and ISNUMBER turns hit/miss into TRUE/FALSE.

Modern alternative: for the extractions themselves, Excel 365’s TEXTBEFORE, TEXTAFTER, and TEXTSPLIT skip the position math entirely. FIND still rules case-sensitive tests and pre-365 workbooks.

Errors & common pitfalls

#VALUE! — text not found. FIND’s signature error. Either the text genuinely isn’t there, or it is there in different case ("excel" vs "Excel"). Fixes: wrap in IFERROR(…, 0), test with ISNUMBER, or switch to case-insensitive SEARCH.

#VALUE! — bad start_num. start_num must be at least 1 and no greater than the length of within_text. Nested-FIND formulas hit this when the first FIND lands at the very end of the string.

Pitfall: wildcards don’t work — by design. =FIND("?", A2) looks for a literal question mark. If you typed * or ? expecting pattern matching, you want SEARCH.

Pitfall: FIND only reports the first match (at or after start_num). To reach the 2nd occurrence, nest: =FIND("-", A2, FIND("-", A2) + 1). For the last occurrence, the classic trick swaps it for a unique marker with SUBSTITUTE first — or Excel 365’s TEXTAFTER with -1 does it directly.

Practice workbook

📊
Download the free FIND practice workbook
Every example on this page, ready to open in Excel — plus practice challenges with answers on a separate tab. No sign-up required.

Frequently asked questions

What's the difference between FIND and SEARCH?
Two switches: FIND is case-sensitive and treats ? * as literal characters; SEARCH ignores case and supports those wildcards. Same arguments, same outputs otherwise. Use FIND when capitalization carries meaning, SEARCH the rest of the time.
How do I check if a cell contains specific text?
Wrap FIND in ISNUMBER: =ISNUMBER(FIND("rush", A2)) returns TRUE or FALSE (case-sensitively). FIND alone returns a position on a hit but #VALUE! on a miss, so it can’t sit in an IF by itself.
Why does FIND return #VALUE!?
The text wasn't found — remember the match is exact, including case, so "excel" misses "Excel". Also check start_num: it must be between 1 and the length of within_text. Wrap in IFERROR(FIND(…), 0) to fail gracefully.
How do I find the second or third occurrence?
Nest FINDs, starting each one just past the previous hit: =FIND("-", A2, FIND("-", A2) + 1) finds the second hyphen. Third occurrence: nest once more. Beyond that, SUBSTITUTE’s instance_num argument is cleaner.
Can I use wildcards with FIND?
No — FIND treats ? and * as ordinary characters to hunt for. That makes it the right tool for finding literal question marks and asterisks. For pattern matching, use SEARCH, where ? is any character, * any run, and ~ escapes a literal.
Is FIND faster than SEARCH?
Any difference is negligible in real workbooks. Choose by behavior, not speed: case-sensitivity and literal wildcards mean FIND; forgiving matching means SEARCH.

Master functions like this in one day

This page covers one function. Our Excel Formulas and Functions class covers the 30 that matter most — live, hands-on, taught by professionals in Dallas–Fort Worth, Houston, Austin, Oklahoma City, Denver, or online.

See the Formulas & Functions Class

Related functions: SEARCH · LEFT · MID · RIGHT · LEN · TEXTBEFORE