=SEARCH("apple",A2)는 A2에서 apple이 시작하는 위치를 1부터 세어 반환하며, 대문자와 소문자를 무시합니다. =FIND("apple",A2)도 같은 일을 하지만 대소문자가 정확히 같을 때만 일치합니다. 텍스트가 없으면 둘 다 #VALUE!를 반환합니다.
| A | B | C | |
|---|---|---|---|
| 1 | Text | FIND("apple") | SEARCH("apple") |
| 2 | Apple pie | #VALUE! | 1 |
| 3 | Green apple | 7 | 7 |
| 4 | Banana bread | #VALUE! | #VALUE! |
#VALUE! 인수의 형식이 잘못되었습니다. 예를 들어 숫자 자리에 텍스트가 있습니다.Apple pie는 대문자 A로 시작하므로 FIND는 일치하지 않아 #VALUE!를 반환하고, SEARCH는 1을 반환합니다. Green apple에서는 둘 다 7을 반환합니다. 공백도 글자로 셉니다. Banana bread에는 apple이 아예 없습니다.
구문
=FIND(find_text, within_text, [start_num])
=SEARCH(find_text, within_text, [start_num])
find_text: 찾을 내용입니다. 글자 하나나 단어입니다.within_text: 검색할 셀입니다.start_num: 검색을 시작할 위치로, 생략하면 1입니다. 결과는 여전히 셀의 첫 글자부터 셉니다.
셀에 특정 텍스트가 포함되어 있는지 확인하기
위치 자체가 필요한 경우는 드뭅니다. 보통 궁금한 것은 "이 셀에 그 단어가 들어 있는가"입니다. 위치는 숫자이고 찾지 못하면 오류이므로, ISNUMBER가 결과를 TRUE나 FALSE로 바꿉니다:
| A | B | C | |
|---|---|---|---|
| 1 | Note | Contains "late" | Status |
| 2 | Arrived late | TRUE | Check |
| 3 | On time | FALSE | OK |
| 4 | LATE by 2 days | TRUE | Check |
| 5 | Delivered | FALSE | OK |
SEARCH는 대소문자를 무시하므로 A4의 LATE와 일치합니다. latest나 chocolate과도 일치한다는 점에 주의하세요. SEARCH는 단어 전체가 아니라 글자를 찾습니다. 앞에 공백을 붙여 " late"를 찾으면 조금 좁혀집니다. 단어가 들어 있는 셀의 개수를 세려면 =COUNTIF(A2:A5,"*late*")가 더 짧습니다. 텍스트가 있는 셀 개수 세기를 참고하세요.
| A | B | |
|---|---|---|
| 1 | Subject | Urgent? |
| 2 | URGENT: server down | |
| 3 | Monthly report | |
| 4 | Refund request, urgent |
직접 해 보세요: B2에서 A2의 제목에 대소문자와 관계없이 urgent라는 단어가 들어 있으면 TRUE를, 없으면 FALSE를 반환하세요. 수식은 B4까지 아래로 채워집니다.
두 번째로 나오는 위치 찾기
start_num을 쓰면 첫 번째 일치 다음부터 찾기 시작할 수 있습니다. FIND 안에 FIND를 넣으세요. 안쪽 FIND가 첫 번째 대시를 찾고, 바깥쪽 FIND가 그 다음 글자부터 시작합니다.
| A | B | C | |
|---|---|---|---|
| 1 | Code | First dash | Second dash |
| 2 | NYC-2041-B | 4 | 9 |
| 3 | BOSTON-15-AA | 7 | 10 |
두 위치를 알면 MID로 대시 사이를 가져올 수 있습니다: =MID(A2,B2+1,C2-B2-1)은 2041을 반환합니다.
| A | B | |
|---|---|---|
| 1 | Position | |
| 2 | ana@coddy.tech |
직접 해 보세요: B2에서 이메일 주소의 @ 위치를 반환하세요.
FIND와 SEARCH가 #VALUE!를 반환할 때
여기서 #VALUE!는 "찾을 수 없음"이라는 뜻일 뿐입니다. 쓸모 있는 값으로 바꾸세요:
| A | B | |
|---|---|---|
| 1 | Position of @ | |
| 2 | ana@coddy.tech | 4 |
| 3 | not an email | 0 |
=FIND("@",A2)>0처럼 결과를 그대로 숫자와 비교하지 마세요. 찾지 못하면 오류이므로 비교는 FALSE가 아니라 #VALUE!를 반환합니다. 위 섹션처럼 ISNUMBER로 검사하세요.
와일드카드: SEARCH만 가능
SEARCH는 와일드카드 ?(아무 글자 하나)와 *(글자 수와 상관없는 아무 문자)를 받습니다. FIND는 이를 문자 그대로 취급합니다. 엑셀에서:
=SEARCH("b?d","a bad day") returns 3
=SEARCH("2*B","NYC-2041-B") returns 5
=SEARCH("~?","Why?") returns 4, the tilde means a real question mark
=FIND("?","Why?") returns 4, FIND has no wildcards
엑셀 함수 전반에서 쓰는 *, ?, ~는 와일드카드 페이지에 더 자세히 있습니다.
FIND, SEARCH, Ctrl+F 비교
| FIND | SEARCH | Ctrl+F | |
|---|---|---|---|
| 대소문자 | 같아야 함 | 무시 | 무시, 대/소문자 구분에 체크하지 않은 경우 |
| 와일드카드 | 없음 | ?, *, ~ | ?, *, ~ |
| 찾지 못하면 | #VALUE! | #VALUE! | 메시지 |
| 결과 | 위치, 다시 계산됨 | 위치, 다시 계산됨 | 셀을 선택 |
값을 한 번만 찾을 때는 홈 > 찾기 및 선택 > 찾기(Ctrl+F, Mac에서는 Cmd+F)가 수식보다 빠릅니다. 모든 행에서 표시하거나 추출하고 계속 갱신되게 하려면 FIND나 SEARCH를 쓰세요. 대소문자에 의미가 있으면(ab와 AB 같은 제품 코드) FIND를, 사람이 입력하는 모든 것에는 SEARCH를 고르세요.
자주 묻는 질문
엑셀에서 FIND와 SEARCH의 차이는 무엇인가요?
FIND는 대소문자를 구분하고 와일드카드를 받지 않습니다. SEARCH는 대소문자를 무시하고 ?와 *를 받습니다. =FIND("a","Apple")은 #VALUE!이고, =SEARCH("a","Apple")은 1입니다.
엑셀에서 두 대시 사이의 텍스트를 추출하려면 어떻게 하나요?
두 대시를 모두 찾고 그 사이를 MID로 가져옵니다: =MID(A2,FIND("-",A2)+1,FIND("-",A2,FIND("-",A2)+1)-FIND("-",A2)-1)는 NYC-2041-B에서 2041을 반환합니다. Microsoft 365에서는 =TEXTBEFORE(TEXTAFTER(A2,"-"),"-")가 더 짧습니다.
FIND가 #VALUE!를 반환하는 이유는 무엇인가요?
텍스트가 셀에 없거나, 대소문자가 다르게 들어 있기 때문입니다(FIND는 대소문자를 구분합니다). 다른 값을 반환하도록 감싸세요: =IFERROR(FIND("-",A2),0).
문자가 두 번째로 나오는 위치를 찾으려면 어떻게 하나요?
첫 번째 일치 다음 글자부터 검색을 시작합니다: =FIND("-",A2,FIND("-",A2)+1). 세 번째 인수는 검색을 시작할 위치입니다.