FIND returns the starting position of one text string inside another, counting from the left and treating uppercase and lowercase as different. It is the go-to function when you need an exact, case-sensitive location rather than a fuzzy match.
=FIND(find_text, within_text, [start_num])What does FIND do?
FIND is a text function that tells you where a piece of text sits inside a longer string. Give it the text you are looking for and the text to search, and it returns a number: the position of the first character of the match, counting from the left. Unlike SEARCH, FIND is case-sensitive, so FIND("A","apple") fails while FIND("a","apple") returns 1.
This matters because many everyday tasks depend on knowing exactly where something starts. Splitting a full name at the space, pulling a domain out of an email address, or checking whether a product code contains a hyphen all begin with a position. FIND gives you that position reliably, without guessing or manually counting characters.
Imagine a list of employee email addresses and you need the username part before the @ symbol. FIND locates the @, and a companion function such as LEFT extracts everything before it. The same pattern works for order codes, file paths, and reference numbers, which is why FIND appears in so many real spreadsheets.
When to use FIND
- Extracting the username from an email address by locating the @ symbol.
- Splitting a full name into first and last name at the space character.
- Checking whether a product code contains a hyphen or other separator.
- Pulling a file name out of a full folder path.
- Finding the position of a colon in a time or label string.
- Validating that a reference number starts with a specific prefix.
FIND syntax
=FIND(find_text, within_text, [start_num])| Argument | Required? | What to enter |
|---|---|---|
find_text | Required | The text you want to locate. It can be typed directly in quotes or a cell reference. Example: "@" or A2. |
within_text | Required | The text to search inside. Usually a cell reference. Example: B2. |
start_num | Optional | The character position to start searching from. Defaults to 1. Use it to skip earlier matches. Example: 5 starts looking at the fifth character. |
What it returns: A number: the position of the first character of find_text within within_text, counting from the left starting at 1. If the text is not found, FIND returns the #VALUE! error.
FIND examples
1 Locate the @ symbol in an email address
Here we want the position of the @ sign so the username can be extracted later. The formula =FIND("@",A2) scans the email in A2 from left to right. In "anna.smith@example.com" the @ is the eleventh character, so the result is 11. This position is the anchor for a LEFT formula that pulls the username.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | ||||
| 2 | anna.smith@example.com | 11 | ||
| 3 | james.lee@company.org | |||
| 4 | maria.garcia@school.edu | |||
| 5 | tom.brown@mail.net | |||
| 6 | sara.wong@business.co | |||
| 7 |
2 Find the space between first and last name
The aim is to find the space that separates a first name from a last name. The formula =FIND(" ",A2) searches for a single space character inside the full name. In "John Smith" the space is the fifth character, so the result is 5. A LEFT formula using this position minus one would return "John".
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Full Name | |||
| 2 | John Smith | 5 | ||
| 3 | Emma Johnson | |||
| 4 | Michael Brown | |||
| 5 | Olivia Davis | |||
| 6 | William Wilson | |||
| 7 |
3 Check a product code for a hyphen
The goal is to confirm where the hyphen sits in a product code. The formula =FIND("-",A2) returns the position of the first hyphen in A2. For "PRD-1045" the hyphen is the fourth character, so the result is 4. If a code had no hyphen, FIND would return #VALUE!, which can be wrapped in IFERROR to show a friendly message.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Product Code | |||
| 2 | PRD-1045 | 4 | ||
| 3 | PRD-2087 | |||
| 4 | PRD-3310 | |||
| 5 | PRD-4521 | |||
| 6 | PRD-5099 | |||
| 7 |
4 Extract the file name from a folder path
The task is to find the last backslash in a file path so the file name can be isolated. The formula =FIND("\",A2,FIND("\",A2)+1) uses the optional start_num argument. The inner FIND locates the first backslash, then the outer FIND starts searching one character later to find the next backslash. For "C:\Reports\Q1.xlsx" the second backslash is at position 11, so the result is 11.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | File Path | |||
| 2 | C:\Reports\Q1.xlsx | 11 | ||
| 3 | D:\Data\Sales.csv | |||
| 4 | E:\Backup\Notes.txt | |||
| 5 | F:\Projects\Plan.docx | |||
| 6 | G:\Archive\Old.pdf | |||
| 7 |
Common FIND errors and how to fix them
| Error | Why it happens | How to fix it |
|---|---|---|
| #VALUE! | The find_text is not present in within_text, or start_num is greater than the length of within_text. | Check spelling and case. Wrap the formula in IFERROR to return a blank or message, for example =IFERROR(FIND("x",A2),"Not found"). |
| #VALUE! | start_num is zero, negative, or not a number. | Use a positive whole number for start_num, or leave it out to default to 1. |
| Wrong position returned | FIND is case-sensitive, so "A" and "a" are treated differently; also, start_num may be skipping an earlier match. | Use SEARCH if you need a case-insensitive match, and review the start_num value. |
| #NAME? | The function name is misspelled or the formula uses smart quotes instead of straight quotes. | Type FIND exactly and use straight double quotes around text values. |
Tips for using FIND
- Remember FIND is case-sensitive; use SEARCH when case should be ignored.
- Combine FIND with LEFT, RIGHT, or MID to split text at a known character.
- Use the optional start_num to find the second or third occurrence of a character.
- Wrap FIND in IFERROR to handle missing text gracefully instead of showing #VALUE!.
- Test the position on one row before filling the formula down a whole column.
- Use cell references for find_text when the search character may change.
Frequently asked questions
What is the difference between FIND and SEARCH?
FIND is case-sensitive and does not allow wildcards. SEARCH is case-insensitive and supports wildcards such as ? and *. Use FIND when exact case matters.
Why does FIND return #VALUE!?
The text was not found, or start_num is invalid. Check spelling, case, and the start_num value, or wrap the formula in IFERROR.
Can FIND return the position of the second occurrence?
Yes. Use start_num to begin searching after the first match, for example =FIND("-",A2,FIND("-",A2)+1).
Does FIND count spaces?
Yes. Every character, including spaces, counts as one position.
Can FIND search for an empty string?
Yes, FIND with an empty find_text returns the start_num position, which is rarely useful in practice.
Related functions
Every example on this page was recalculated by SheetSkill’s spreadsheet engine. FIND reference