엑셀 텍스트 찾기 FIND SEARCH와 와일드카드

· 엉클벤 엑셀함수(스프레드시트)

핵심 요약

  • =SEARCH("찾을 글자", 셀)과 =FIND("찾을 글자", 셀)은 찾는 글자가 몇 번째에 있는지 숫자로 돌려주고, 없으면 #VALUE! 오류를 냅니다.
  • FIND는 대소문자를 구분하고 와일드카드를 쓸 수 없습니다. SEARCH는 대소문자를 구분하지 않고 *, ? 와일드카드를 쓸 수 있습니다.
  • *는 글자 수 상관없이, ?는 한 글자를 대신합니다. 물음표나 별표 자체를 찾을 때는 앞에 ~를 붙입니다.

상품코드에서 하이픈이 몇 번째에 있는지, 상품명에 특정 단어가 들어 있는지 확인해야 할 때가 있습니다. 눈으로 세기에는 행이 너무 많고, 위치를 알아야 LEFT·MID 같은 함수로 글자를 잘라 낼 수 있습니다.

이 글에서는 글자 위치를 찾는 FIND와 SEARCH 함수의 사용법과 차이, 찾는 글자가 없을 때의 오류 처리, 그리고 SEARCH·COUNTIF·VLOOKUP에서 쓰는 와일드카드 *, ?, ~를 정리합니다.

글자 찾기 *·? 활용법 - FIND·SEARCH 와일드카드

FIND와 SEARCH 함수 기본 사용법

두 함수는 인수 구성이 똑같습니다.

=SEARCH(find_text, within_text, [start_num])
=FIND(find_text, within_text, [start_num])
인수뜻예시
find_text찾을 글자"-"
within_text찾을 대상이 되는 문자열 또는 셀A2
start_num몇 번째 글자부터 찾을지(생략하면 1)5

A2에 상품코드 DRV-2026-A01이 들어 있다고 하겠습니다.

수식결과이유
=FIND("-", A2)4첫 하이픈이 네 번째 글자
=SEARCH("2026", A2)5찾는 글자의 첫 글자 위치를 돌려줌
=SEARCH("갱신", "운전자보험 갱신형")7한글·공백도 한 글자로 셈

찾는 글자가 여러 번 나오면 가장 앞에 있는 위치만 돌려줍니다. 결과로 나온 숫자는 그 자체보다 LEFT, RIGHT, MID 함수에 몇 글자를 자를지 알려 주는 용도로 많이 쓰입니다.

시작 위치를 지정해 두 번째 글자 찾기

세 번째 인수 start_num을 넣으면 그 위치부터 찾기 시작합니다. 앞쪽 글자를 건너뛸 뿐 결과는 여전히 문자열 처음부터 센 위치입니다. 이를 이용하면 두 번째 하이픈의 위치도 구할 수 있습니다.

=FIND("-", A2, FIND("-", A2)+1)

안쪽 FIND가 첫 하이픈 위치 4를 찾고, 여기에 1을 더한 5번째 글자부터 다시 찾으므로 결과는 9입니다.

아래 화면은 SEARCH가 다른 함수 안에서 쓰이는 전형적인 모습입니다. San Francisco, California에서 쉼표 위치(14)를 찾고, 전체 글자 수(25)에서 빼 쉼표 뒤의 11글자를 RIGHT로 가져온 뒤 TRIM으로 앞 공백을 지웁니다.

C4 셀에 =TRIM(RIGHT(B4,LEN(B4)-SEARCH(",",B4))) 수식을 입력해 쉼표 뒤의 주 이름을 추출하는 엑셀 화면
SEARCH로 쉼표 위치를 찾아 RIGHT에 넘기는 수식 (영문판 엑셀 화면 · 이미지 출처: Deskbright's Ultimate Excel Book, 저자 허락 하에 사용)

찾는 글자가 없을 때 오류 처리

찾는 글자가 없으면 두 함수 모두 #VALUE! 오류를 냅니다. 목록 전체에 수식을 채우면 일부 행에서 오류가 나기 쉬우므로 목적에 따라 감싸 줍니다.

  • 포함 여부만 알고 싶을 때: =ISNUMBER(SEARCH("DRV", A2))는 들어 있으면 TRUE, 없으면 FALSE입니다.
  • 조건에 따라 표시할 때: =IF(ISNUMBER(SEARCH("DRV", A2)), "운전자", "기타")
  • 오류 대신 다른 값을 넣을 때: =IFERROR(SEARCH("-", A2), 0)

SEARCH는 단어의 일부만 맞아도 찾습니다. 상품명에서 "갱신"을 찾으면 "갱신형"뿐 아니라 "비갱신형"도 TRUE가 됩니다. 이런 경우에는 "비갱신"을 먼저 판단하거나 더 긴 단어로 찾으세요.

FIND와 SEARCH의 차이

구분FINDSEARCH
대소문자구분함구분하지 않음
와일드카드쓸 수 없음(*, ?를 글자 그대로 찾음)쓸 수 있음
예시=FIND("a01", A2) → #VALUE!=SEARCH("a01", A2) → 10

영문 코드에서 대문자와 소문자를 다른 값으로 봐야 한다면 FIND를, 대소문자에 상관없이 찾거나 패턴으로 찾으려면 SEARCH를 고릅니다. 한글만 다루고 와일드카드를 쓰지 않는다면 둘의 결과가 같습니다.

와일드카드 *, ?, ~ 사용법

와일드카드는 어떤 글자든 대신할 수 있는 기호입니다.

기호뜻예시
*0글자 이상, 글자 수 상관없음"DRV*"는 DRV로 시작하는 모든 값
?정확히 한 글자"A?1"은 A01, A11, AB1
~바로 뒤 기호를 일반 글자로 취급"~?"는 물음표 자체

SEARCH에서는 =SEARCH("A?1", A2)가 10, =SEARCH("20??", A2)가 5를 돌려줍니다. 와일드카드는 SEARCH 말고도 여러 곳에서 쓸 수 있습니다.

  • 조건 함수: =COUNTIF(A:A, "DRV-*")는 DRV-로 시작하는 코드 개수, =SUMIF(B:B, "*갱신*", C:C)는 이름에 "갱신"이 든 행의 합계입니다.
  • 찾기 함수: VLOOKUP, HLOOKUP, MATCH를 정확히 일치 방식(FALSE 또는 0)으로 쓸 때 "*A01"처럼 찾을 값에 넣을 수 있습니다.
  • 찾기 및 바꾸기: Ctrl+F, Ctrl+H 창에서도 같은 규칙이 적용됩니다.

반면 FIND 함수와 =A2="DRV*" 같은 비교 연산자에서는 와일드카드가 동작하지 않고 별표를 글자 그대로 비교합니다.

구글 스프레드시트에서는

구글 스프레드시트에도 FIND와 SEARCH가 있고, FIND는 대소문자를 구분하고 SEARCH는 구분하지 않는 점이 같습니다. COUNTIF, SUMIF에서는 *와 ? 와일드카드를 엑셀처럼 쓸 수 있습니다. 더 복잡한 패턴으로 찾아야 한다면 =REGEXMATCH(A2, "^DRV-")처럼 정규 표현식 함수를 쓰는 방법도 있습니다.

자주 묻는 질문

FIND에서 와일드카드를 쓰면 왜 #VALUE!가 나오나요?

FIND는 와일드카드를 지원하지 않아 *와 ?를 글자 그대로 찾습니다. 대상 문자열에 별표나 물음표가 없으면 #VALUE! 오류가 납니다. 패턴으로 찾으려면 SEARCH를 쓰세요.

물음표나 별표가 들어간 글자를 SEARCH로 찾으려면요?

기호 앞에 물결표를 붙입니다. =SEARCH("~?", A2)는 물음표 자체의 위치를 찾습니다. 물결표 없이 "?"만 쓰면 아무 글자 하나와 일치해 1이 나옵니다.

특정 단어가 들어 있는 셀의 개수는 어떻게 세나요?

=COUNTIF(A:A, "*갱신*")처럼 단어 앞뒤에 별표를 붙입니다. 셀 하나에 들어 있는지만 확인하려면 =ISNUMBER(SEARCH("갱신", A2))를 씁니다.

함께 보면 좋은 글: 엑셀 TRIM LEN 함수 공백 제거와 글자 수, 엑셀 VLOOKUP 함수 사용법 총정리

벤

글쓴이 · 엉클벤

엑셀·스프레드시트 함수, AI 활용법, 컴퓨터·스마트폰 생활 팁을 따라 하기 쉽게 정리합니다. 틀린 내용은 연락처로 알려 주세요. 소개 보기

📚 벤스페이퍼 엑셀 강좌

기초부터 피벗 테이블까지 배우는 순서대로 정리한 엑셀 강좌 전체 목차에서 다음 글을 이어서 볼 수 있습니다.

Powered by Blogger