FIND function
FIND returns the position of one piece of text inside another, counting from 1. On its own it's just a number, but paired with LEFT, MID or RIGHT it tells them where to cut. FIND is case-sensitive and has no wildcards; SEARCH is the forgiving version.
- Available in
- Every current version
- Category
- Text functions
- Returns
- A number: the position of the first character of the match, or #VALUE! if it isn't found.
- Google Sheets
- Works the same in Google Sheets.
Syntax
=FIND(find_text, within_text, [start_num])
| Argument | Required? | What it is |
|---|---|---|
find_text | Required | The text to look for. |
within_text | Required | The text to search in. |
start_num | Optional | Position to start searching from. Leave it out to start at 1. |
Examples
Each result below is calculated from the sample sheet by our formula engine, the same one that grades the practice.
| Cell | Formula | Result | What it shows |
|---|---|---|---|
| D2 | =FIND("@",A2) | 10 | The position of the @ |
| D3 | =FIND("-",B3,FIND("-",B3)+1) | 8 | The second dash: start searching just after the first |
| D4 | =LEFT(A4,FIND(".",A4)-1) | lee | The first name: everything before the first dot |
Try it live
This is the sample sheet. Change any number or text, or edit a formula, and the results update.
Show the sample data as a table
| Order code | Note | Result | |
| maya.chen@acme.com | NY-2026-0142 | Ships Monday | 10 |
| raj@globex.io | CA-2026-0187 | ships Tuesday | 8 |
| lee.wong@initech.net | TX-2025-0033 | Backorder | lee |
Practice FIND
From lesson 16, TEXTBEFORE, TEXTAFTER & FIND. Graded instantly, then re-checked on changed data.
The classic way
D2, extract the username again using LEFT and FIND, the method that works in every Excel version. Fill down to D6.Common mistakes
| What you see | Why, and how to fix it |
|---|---|
| #VALUE! | FIND couldn't find the text, often because of case: FIND("ships",C2) misses "Ships". Use SEARCH for a case-insensitive match, or wrap FIND in IFERROR. |
| Wildcards don't work | FIND treats * and ? as literal characters. Use SEARCH when you need wildcards. |
| Off by one when cutting | FIND returns the position of the delimiter itself. Subtract 1 to stop before it, or add 1 to start after it. |
Tips
- Test whether text contains something, with case: =ISNUMBER(FIND("VIP",A2)) returns TRUE or FALSE.
Questions
What is the difference between FIND and SEARCH in Excel?
FIND is case-sensitive and treats wildcards as plain characters. SEARCH ignores case and supports the ? and * wildcards. Both return #VALUE! when nothing is found.
How do I find the second occurrence of a character?
Start the second search one character after the first match: =FIND("-",A2,FIND("-",A2)+1).
Lessons that use FIND
Last reviewed October 2026. Every example result on this page is calculated live by the Spreadsheet Practice formula engine.