
Returns the position of one text string inside another. Use it when you need a case-sensitive search for a character, word, or delimiter.
The Excel FIND function returns the position of one text string inside another. For example, =FIND("-", "EC-101") returns 3 because the hyphen is the third character.
FIND is mainly used to locate a delimiter such as a hyphen, slash, space, or colon, then pass that position into another text function. That makes it useful for splitting codes, filenames, email addresses, and other structured text values.
FIND is case-sensitive and does not support wildcards. If you need a case-insensitive search, or if you want wildcard matching, use SEARCH instead.
Returns the starting position of the match. The match must respect letter case.
Returns a whole number such as 3 or 7. If the text is not found, FIND returns #VALUE!.
=FIND(find_text, within_text, [start_num])
Use find_text for what you want to locate, within_text for the text to search, and start_num if the search should begin later in the string. If you omit start_num, Excel starts at the first character.
FIND and SEARCH are similar, but the matching rules are different. Use FIND when uppercase and lowercase must stay different. Use SEARCH when the match should ignore case or allow wildcards.
| Function | Case-Sensitive? | Wildcards? | Use When |
|---|---|---|---|
FIND |
Yes | No | Use when the letter case must match exactly |
SEARCH |
No | Yes | Use when you want a more flexible text search |
LEFT |
- | - | Often paired with FIND to return the text before a delimiter |
MID |
- | - | Often paired with FIND to return text from the middle of a string |
If FIND cannot locate the requested text, it returns #VALUE!. Wrap it in ISNUMBER if you only need TRUE or FALSE, or in IFERROR if you want a fallback result such as "not found".
FIND is usually part of a larger formula. In many worksheets, its job is to locate a separator so another function can extract the part before or after it. A standard example is =LEFT(A1,FIND("-",A1)-1), which returns the text before the first hyphen.
The start_num argument matters when the same character appears more than once. It lets you skip the first match and continue searching later in the text, which is useful when you work with repeated delimiters or structured codes.
ISNUMBER(FIND(...)) when you only need to test whether a character or word exists.This is the direct use of FIND. The result is the position of the first hyphen, which you can then reuse in formulas that split the code into separate parts. In a longer value such as "PRO-2025-A", FIND still returns the first hyphen unless you set a later starting position.
=FIND("-", "EC-101") // Returns 3
=FIND("-", "PRO-2025-A") // Returns 4 (first hyphen only)
In cell F1, use FIND to get the position of the "-" in A2 ("EC-101"). Expected result: 3.
The third argument changes where Excel starts looking. Here, the search begins at character 2, so the first "e" is skipped and FIND returns the next one instead. This pattern is useful when you need the second or third occurrence of the same character.
=FIND("e", "excel-clash", 2)
// Starts searching from position 2
// Returns 4
In cell F2, use FIND to locate the second "e" in A3 ("excel-clash") by starting the search at position 2.
On its own, FIND returns either a position number or an error. Wrapping it in ISNUMBER turns that into a clean TRUE/FALSE test. This is useful in helper columns, validation rules, and conditional logic.
=ISNUMBER(FIND("X", A4))
// TRUE if "X" is found in A4, FALSE if not found
In cell F3, use ISNUMBER(FIND("X", A4)) to safely check if "X" appears in A4 without getting an error.
This is one of the most common FIND patterns. FIND returns the location of the delimiter, then subtracting 1 gives the number of characters before it. That result can be used directly as a length or passed into LEFT to return the prefix.
=FIND("-", A2)-1
// "EC-101" -> 3-1 = 2
=LEFT(A2, FIND("-",A2)-1)
// Extracts "EC" from "EC-101"
In cell F4, use FIND to get the position of the "-" in A2, then subtract 1. This gives the length of the text before the dash.
FIND counts every character, including spaces. If the text contains leading spaces or repeated spaces, the returned position may be different from what you expect by eye. Cleaning the text with TRIM first can make the result more consistent.
#VALUE!.FIND returns the position of one text string inside another.=FIND(find_text, within_text, [start_num]).ISNUMBER or IFERROR when the match may be missing.Tell your friends about this post