업무에서 방대한 텍스트 데이터를 다루다 보면, 특정 문자가 몇 번째에 위치하는지 파악해야 하는 상황이 반복됩니다. 이메일 주소에서 도메인을 분리하거나, 주소 데이터에서 시·구를 나눌 때 수작업으로 처리하면 오류가 생기기 마련입니다. 엑셀 FIND 함수는 이런 반복 작업을 자동화해주는 핵심 텍스트 함수로, LEFT·MID·RIGHT 등 추출 함수와 조합하면 실무 생산성을 크게 높일 수 있습니다. 이 글에서는 FIND 함수의 구조부터 실전 예제, SEARCH 함수와의 차이점, 그리고 오류 처리 방법까지 단계적으로 정리합니다.
FIND 함수 기본 구조
FIND 함수는 특정 문자(열)가 문자열 내 몇 번째 위치에 있는지를 숫자로 반환하는 함수입니다. 위치는 맨 왼쪽 첫 글자를 1로 계산하며, 띄어쓰기도 한 글자로 취급합니다.
기본 구문은 다음과 같습니다:
“`
text
=FIND(find_text, within_text, [start_num])
“`
- `find_text` — 찾으려는 문자 또는 문자열 (필수, 텍스트는 큰따옴표로 감쌈)
- `within_text` — 검색 대상이 되는 원본 텍스트 또는 셀 참조 (필수)
- `start_num` — 검색을 시작할 위치 (선택, 생략 시 기본값 1)
중요한 특성 두 가지:
- 대소문자를 구분합니다. `=FIND(“Apple”, …)` 와 `=FIND(“apple”, …)` 는 서로 다른 결과를 반환합니다
- 찾는 문자가 존재하지 않으면 `#VALUE!` 오류를 반환합니다
LEFT·MID·RIGHT와 조합한 실전 예제
FIND 함수의 진가는 단독 사용보다 문자 추출 함수와 조합할 때 발휘됩니다. 위치 숫자를 구하면 이를 기준으로 원하는 부분만 잘라낼 수 있습니다.
예제 1 — 이메일에서 ID와 도메인 분리
`user@example.com` 에서 `@` 기호 위치를 찾아 ID와 도메인을 각각 추출합니다.
“`
text
[A2] = user@example.com
@ 위치 찾기: =FIND(“@”, A2) → 5
ID 추출 (LEFT): =LEFT(A2, FIND(“@”,A2)-1) → user
도메인 추출(MID): =MID(A2, FIND(“@”,A2)+1, LEN(A2)-FIND(“@”,A2)) → example.com
“`
예제 2 — 주소에서 시/구 분리
`서울특별시 강남구 테헤란로` 같은 주소에서 첫 번째 공백을 기준으로 시와 나머지를 나눌 수 있습니다.
“`
text
시 추출: =LEFT(A2, FIND(” “, A2)-1) → 서울특별시
나머지: =MID(A2, FIND(” “, A2)+1, LEN(A2)) → 강남구 테헤란로
“`
예제 3 — 시작 위치 지정으로 두 번째 문자 찾기
`banana`에서 두 번째 `a`의 위치를 찾으려면 `start_num`을 활용합니다.
“`
text
=FIND(“a”, “banana”, 3) → 4 (세 번째 문자부터 검색 시작)
“`
FIND vs SEARCH — 어떻게 다른가
두 함수는 구문 구조가 동일하지만 작동 방식에 차이가 있습니다.
| 항목 | FIND | SEARCH |
|---|---|---|
| 대소문자 구분 | 구분함 | 구분 안 함 |
| 와일드카드(`*`, `?`) 사용 | 불가 | 가능 |
| 주요 활용 | 정확한 위치 검색 | 유연한 패턴 검색 |
영문 데이터에서 대소문자를 정확히 구별해야 한다면 FIND, 대소문자 무관하게 검색하거나 `*`·`?` 와일드카드가 필요하다면 SEARCH를 사용합니다.
IFERROR로 오류 처리하기
찾는 문자가 없을 때 `#VALUE!`가 그대로 표시되면 보고서 가독성이 떨어집니다. `IFERROR`로 감싸면 오류 대신 원하는 값을 출력할 수 있습니다.
“`
text
=IFERROR(FIND(“@”, A2), “이메일 아님”)
“`
이 수식은 `@`가 없는 셀에서 오류 대신 “이메일 아님” 이라는 텍스트를 반환합니다. IF 함수와 결합하면 특정 문자 포함 여부를 조건 판단에도 사용할 수 있습니다:
“`
text
=IF(IFERROR(FIND(“삼성”, A2), 0)>0, “삼성 관련”, “기타”)
“`
주의사항 정리
실무 적용 전 반드시 확인해야 할 사항들입니다:
- 텍스트 인수는 반드시 큰따옴표(” “) 로 감싸야 합니다
- FIND는 찾는 문자열의 첫 번째 등장 위치만 반환합니다
- `start_num`에 0 또는 음수를 입력하면 오류가 발생합니다
- 빈 문자열(`””`)을 `find_text`로 입력하면 `start_num` 값을 그대로 반환합니다
- 한글도 영문과 동일하게 글자 수 기준으로 위치를 계산합니다 (바이트 기준은 FINDB 사용)