# How to find the position of a character in a text string in Excel

Use =FIND("@",A2). It returns the position of the first match, counting the first character as 1; SEARCH does the same but ignores case.

**Excel:** `=FIND($E$1,A2)` (Every current version)

**Google Sheets:** the same formula works.

## Example

Sample data (row 1 is the header):

| A | B | C | D | E |
| --- | --- | --- | --- | --- |
| Email | Position |  | Character | @ |
| lena.park@northwind.example |  |  |  |  |
| omar@contoso.example |  |  |  |  |
| p.shah@fabrikam.example |  |  |  |  |
| tom.becker@litware.example |  |  |  |  |
| ines@adatum.example |  |  |  |  |

Formula in B2, filled to B6: `=FIND($E$1,A2)`

Result: 10; 5; 7; 11; 5

## How it works

FIND returns the position of the first match. On its own the number is rarely the answer, but it is what LEFT, MID and RIGHT need to cut text at a character: everything before the @ is `LEFT(A2,FIND("@",A2)-1)`.

## Other ways

- `=SEARCH($E$1,A2)`: SEARCH ignores case and understands the wildcards ? and *. Use FIND when case matters or the character is ? or *.

## Common mistakes

- If the character isn't there, FIND returns #VALUE!. Wrap it in IFERROR, or test with `ISNUMBER(FIND(…))`.
- SEARCH treats ? and * as wildcards. To find a real question mark, search for "~?".

## Questions

**How do I find the second occurrence?**

Start searching after the first: `=FIND($E$1,A2,FIND($E$1,A2)+1)`.

**How do I find the last occurrence?**

Use `=FIND(CHAR(1),SUBSTITUTE(A2,$E$1,CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2,$E$1,""))))`.

Every formula and result on this page was checked by running it in the Spreadsheet Practice formula engine on 2026-10-30.

Source: https://spreadsheetpractice.com/formulas/find-position-of-a-character-in-text
