본문 바로가기
엑셀 기초 강좌

039. (엑셀 기초 함수) Find, Search 함수 사용법 - 내가 찾는 문자가 어느 위치에 있는지 찾아보자(차이점, 와일드카드 찾기)

by Excel.Jump 청출어람 2022. 12. 27.
반응형

 

 

 

Find, Search 함수

 

 

 

■ 목차

 

1. 함수 설명
2. Find, Search 함수의 구문, 사용방법 (차이점, 와일드카드로 찾기)
3. Find 함수 사용해 보기
** 핵심 요약

 

 

 

 

1. 함수 설명

 

  - "Find 함수"는 텍스트 문자열에서 찾고자 하는 문자의 "위치"를 찾아 주는 함수입니다. 

  - 그래서  "Find 함수"를 사용하게 되면 내가 찾고자 하는 "문자"가 몇 번째 위치에 있는지(=시작하는지)를 알 수 있습니다.
  - 그럼 이렇게 "Find 함수"로 원하는 문자의 위치를 찾아서 어디에 사용을 할까요? 
  - 위치를 숫자로 알게되면 우리는 "Left, Right, Mid 함수 등"을 이용해서 찾은 위치를 기반으로 문자열 추출이 가능하게 됩니다.
  - 그리고 원하는 문자 자체가 있는지? 없는지? 도 알 수 있고요

  - 그리고 유사한 함수로 "Search 함수"가 있습니다. 
  - "Find 함수"는 문자를 좀 정확하게 찾는다는 느낌이고 (Find Exactly! , 정확하게 찾아라!) "Search 함수"는 좀 러프하게 찾는다는 느낌(Searching, 탐색)의 함수입니다.
  - 자세한 부분은 본문에서 상세하게 설명을 드리도록 하겠습니다.

 

 

 

 

2. Find 함수의 구문, 사용방법 (차이점, 와일드 카드로 찾기)

 

FIND(find_text, within_text, [start_num])

  - find_text    필수 요소입니다. 찾으려는 텍스트입니다.
  - within_text    필수 요소입니다. 찾으려는 텍스트를 포함하는 텍스트입니다.
  - start_num    선택 요소입니다. 검색을 시작할 문자를 지정합니다. within_text에서 첫 문자의 문자 번호는 1입니다. start_num을 생략하면 1로 간주됩니다.

  - 첫번째 인수는 "find_text"입니다. "찾고자(find) 하는 텍스트(text)"가 되겠네요. 
  - 여기서 중요한 부분은 "텍스트"입니다. 
  - 사실 첫 번째 인수는 꼭 텍스트일 필요는 없습니다. 숫자를 입력해도 잘 찾아 주지만 
  - 대신 "텍스트 (=문자)"를 입력하실 때는 반드시 큰따옴표("") 사이에 입력해서 "텍스트"임을 명시적으로 표시를 해주셔야 합니다.

  - "=find ("한국", A1)" 처럼 텍스트(=문자)인 경우 반드시 큰따옴표 ("") 사이에 문자를 입력하셔야 된다는 의미입니다.
  - "=find (한국, A1)"처럼 큰따옴표 없이 입력한 한국은 전혀 다른 의미로 엑셀이 받아들이고 "이름 정의"라는 곳에서 "한국"이라는 변수를 찾게 되고
  - "이름 정의"에 한국이 없으면 오류값을 표시하게 됩니다.

  - 숫자는 그냥 편하게 숫자 그대로 입력하시면 됩니다. (규칙상 숫자만으로는 "이름 정의"를 사용할 수 없기 때문입니다.)

 

Find 함수 "텍스트" 입력 시 쌍따옴표 입력 주의
* Find 함수 "텍스트" 입력 시 쌍따옴표 입력 주의

 

  - 두 번째 인수는 "within_text" : 찾고자 하는 텍스트가 있는/포함(within)된 문자열(=텍스트, text)입니다. 
  - 보통 찾고자 하는 문장이나 문자열이고 셀주소를 지정해 줍니다.

  - 세 번째 인수는 "start_num" : 검색을 시작할 위치로 생략을 하게 되면 처음부터(=1) 검색을 해서 몇 번째 인지 표시를 하게 됩니다.
  - 간혹 두 번째 단어를 검색하는 경우 우선 첫 번째 나오는 위치를 찾아서 그 위치 뒤에서부터 Start_num을 지정하고 검색을 하면 두 번째 단어가 나오는 위치를 알 수 있습니다.

  - 그리고 find 함수를 뒤에서 즉 오른쪽부터 검색을 하고 싶은 경우가 있는데 이 경우는 좀 복잡해집니다. ㅠㅠ
  - 얘기가 나온 김에 간단하게 원리만 설명드리면 일단 Substitute 함수로 찾고자 하는 문장을 공백으로 바꾸어 전후의 문자 길이를 비교하면 해당 단어가 몇 개가 들어가 있는지 계산이 가능합니다. 
  - 그리고 다시 substitute 함수로 마지막 단어만을 특정한 문자로 변경해서 변경한 문자의 위치를 찾는 방식입니다. 죄송합니다. 설명이 좀 어렵네요. ㅠㅠ
  - 결론은 어렵지만 하려면 할 수는 있다 정도입니다. ^^


  1) 항상 문장 전체에서 처음부터 몇 번째 위치인지를 알려준다.

  - 항상 어디에서 시작을 하든 간에 최종 표시되는 위치값은 처음 시작되는 문자를 1로 봤을 때의 위치입니다. 
  - 즉 "가나다라마다"에서 "start_num"을 1로 하면 세 번째 "다"문자를 3으로 찾아주고
  - 시작위치를 2번으로 하더라도 세번째 위치의 "다"문자를 3으로 찾아 주지만
  - 4로 하게 되면 가장 마지막에 나오는 "다"을 찾아서 6을 표시하게 됩니다.
  - 이렇게 시작위치에서 가장 먼저 나오는 문자의 위치를 찾아서 문장 전체에서 시작을 1로 봤을 때의 위치를 찾아 줍니다.

  - 그리고 또 간과하지 말아야 할 내용으로 "공백", "줄 바꾸기", "점"등 모두 한 개의 문자로 한 자리씩 카운트를 하게 됩니다.

 

Find 함수 : 시작위치와 결과값
* Find 함수 : 시작위치와 결과값

 

  2) 중첩으로 2, 3, … 번째 나오는 문장의 위치를 찾을 수 있다

  - 여기서 우리는 한 가지 팁을 찾을 수 있는데.
  - 위의 예제처럼 찾고자 하는 텍스트가 여러 번 나오게 될 때 "두 번째 나오는 문자"의 위치를 찾고 싶을 때
  - "Find 함수"를 2번 사용하는데,  2번째 "Find 함수"의 시작위치(start_num)를 "첫 번째 Find 함수 결과값" + 1을 해주게 되면
  - 두 번째 문자의 시작위치를 알 수가 있게 됩니다. "Find 함수"를 중첩해서 사용을 한다고 표현을 합니다.

  - 수식이 조금 어렵고 복잡할 수 있는데 이런 원리로 2, 3,... 번째 "텍스트"를 찾을 수도 있다고 이해하시면 되겠습니다.

 

2번째 "텍스트" 찾기 : Find 함수의 중첩
* 2번째 "텍스트" 찾기 : Find 함수의 중첩

 

  - 사실 여기까지가 "Find 함수"의 가장 기본적이 사용 방법입니다. 
  - 다음은 "Search 함수"라고 똑같이 "찾고자 하는 문자의 "위치"를 찾아 주는 함수가 있는데


  3) Search 함수 : 동일하게 찾아 주는데 조금 다르다

  - 사용되는 구문/인수도 모두 동일합니다.
  - SEARCH(find_text,within_text,[start_num])

 

Find 함수와 Search 함수의 차이점
* Find 함수와 Search 함수의 차이점

 

  - 대/소문자 구분을 한다는 의미는 "A"와 "a"을 다른 문자로 취급한다는 얘기입니다.
  - "Find 함수"는 대/소문자를 정확하게 (find exactly!) 구분해서 찾아 주는 함수입니다.

 

대/소문자 구분
* 대/소문자 구분

 

  4) Search 함수 : 와일드카드(*,?)란 무엇인가?

  - 엑셀에 "와일드카드"라는 개념이 있는데 컴퓨터에서는 많이 사용하는 개념입니다.
  - 카드 게임에서 "조커"가 대표적인 와일드카드인데 어떠한 카드로도 대체하여 사용될 수 있는 비장의 카드를 말합니다.

  - 엑셀에서는 와일드카드로 "*" (별표, Asterisk, 애스터리스크), "?"(물음표, Question mark)가 있습니다.
  - 특히 텍스트(문자)를 취급함에 있어서 "어떠한 용도로도 사용될 수 있는 비장의 카드"역할을 하고 있습니다.

  - 모든 텍스트를 대체하는 역할을 하는 와일드카드는 "*"이고
  - 단 한 문자만을 대체하는 역할을 하는 와일드카드는 "?"입니다.

  - 예를 들어 엑셀로 시작하는 문자의 경우 "엑셀*"이라고 표현이 가능하고
  - "엑셀 *" 에는 "엑셀 기초과정", "엑셀로 배우기", "엑셀을 잘하는 법" 등 "엑셀"로 시작하는 모든 문자열이 포함됩니다.
  - 그럼 "*엑셀"의 경우는 "잘 나가는 엑셀", 다시 보는 초급엑셀", 등 "엑셀"로 끝나는 모든 문자열
  - "*엑셀*"의 경우는 "엑셀" 앞뒤로 모든 문자가 대체될 수 있기 때문에 "엑셀"이라는 단어만 들어가면 찾아 줍니다.

  - 이런 경우 "엑셀*" 외에는 우리가 원하는 정확한 위치를 찾는 다기보다는 그러한 문자/문장이 있는지 여부를 확인하는 경우가 많습니다.

 

Search 함수 와일드 카드(*) 사용
* Search 함수 와일드 카드(*) 사용

 

  - 또 다른 와이드 카드 "?"의 경우 단 한 개의 문자만을 대체하는 기능으로
  - "엑셀?"이라고 하면 "엑셀은", "엑셀과"처럼 단 한 개의 문자만을 대체하여 찾아 주는 기능을 해줍니다.
  - 여러 문자의 대체는 "*", 단 한 문자의 대체는 "?"입니다.


  5) Search 함수 : 그런데 와일드카드(*,?)를 찾고 싶을 때는?

  - 그런데 간혹 가다가 진짜로 "?", "*"를 문장에서 찾고 싶을 때는 어떻게 해줘야 할 가요.
  - 이미 "?", "*"의 경우 와일드카드라는 기능으로 엑셀이 사용을 하고 있는데??

  - 이런 경우 "~*", "~?" 형식으로 "~"(물결표, Tilde, 틸드)를 앞에 붙여서 사용을 합니다.
  - "~"는 키보드 상단 "숫자 1" 바로 왼쪽에 있으며 "Shift"키와 같이 사용을 하셔야 합니다.

 

와일드 카드(*, ?)를 찾고 싶을 때
* 와일드 카드(*, ?)를 찾고 싶을 때

 

  - 지금 까지을 요약 해보면
  - "Find 함수"는 대/소문자를 구분하고 와일드카드(*,?) 사용이 불가합니다. 
  - 그냥 정확하게 찾아주는 함수라고 이해하시면 되고 (Find exactly!)
  - "Search 함수"는 대/소분자도 구분 안 해주고 와이드 카드(*,?)를 사용해서 비슷한 문자까지 찾는 게 가능합니다.
  - Searching (탐색)하듯이 러프하게 찾아 주는 함수라고 이해하시면 구분이 쉬울 듯합니다.

 

 

 

 

3. Find 함수 사용해 보기

 

  - 아래와 같은 고객 메일 주소에서 고객 ID부분만을 분리해서 찾아보겠습니다.

 

메일 주소에서 고객 ID 추출하기
* 메일 주소에서 고객 ID 추출하기

 

  1) "Find 함수"로 "@" 위치 찾기

  - 먼저 "Find 함수"를 사용하여 "고객 ID"와 "메일 서버"를 구분하는 "@"의 위치를 찾아보도록 하겠습니다.
  - "=find("라고 키보드로 입력을 하게 되면 친절한 엑셀이 입력해야 하는 인수에 대해서 "풍선 도움말"로 보여 줍니다.

  - 첫 번째 인수는 "find_text" 즉 찾고자 하는 텍스트입니다. 우리는 여기에 "@"이라고 "큰따옴표"를 포함해서 입력을 해줍니다.
  - 우리가 주의할 것 중에 하나는 이렇게 "텍스트"를 입력할 때는 함수에서는 언제나 "큰따옴표( "" )"를 사용해줘야 합니다.
  - "Find 함수" 뿐만 아니라 모든 함수에 적용되는 규칙입니다.
  - 그래야 엑셀이 "이름 정의"라고 하는 변수가 아닌 "텍스트"가 입력이 되었구나라고 정확하게 인식을 하고 수식 계산이 가능하게 됩니다.

  - 두 번째 인수는 "within_text"로 들어가 있는 텍스트 즉. 찾고자 하는 문장이 들어 있는 메일 주소 (B3)을 마우스로 클릭(선택)하여 입력을 합니다.

  - 세 번째 인수는 "[start_num]"이고 이렇게 "대괄호, [ ]"로 둘러싸인 인수의 경우 "선택 인수"로 입력을 하지 않아도 된다는 의미입니다.
  - 단, 입력을 하는 경우와 하지 않는 경우가 어떻게 다른지 정확하게 알고 생략을 해야 할 것입니다.

  - "start_num"은 시작(start), 숫자(number)로 검색을 시작할 위치를 얘기하는 것으로 생략하면 숫자 1로 처음부터 검색을 하게 됩니다.
  - 저희는 처음부터 검색을 할 것이기에 생략을 하도록 하겠습니다.
  - 이경우 생략하는 방식으로는 "= find ("@", B3)",   "=find("@", B3, )",  "=find("@", B3, 1) 이렇게 모두 같은 수식이 됩니다.

 

Find 함수로 위치 찾기
* Find 함수로 위치 찾기

 

  2) "Left 함수"로 "고객 ID" 추출하기

  - "고객 ID"의 경우 "Left 함수"로 텍스트를 추출하는데 "@ 위치 - 1"까지 텍스트를 추출하게 되면 원하는 "고객 ID"만을 정확하게 추출이 가능합니다.

 

Left 함수로 "고객 ID" 추출하기
* Left 함수로 "고객 ID" 추출하기

 

  3) "Find 함수"와 "Left 함수"의 중복함수로 한 번에 구하기

  - 수식이 좀 복잡해지기는 하지만 "Find 함수"와 "Left 함수"를 한 번에 사용하여 함수가 중복된 형태로 사용이 가능합니다.
  - 처음에는 조금 혼돈이 되기도 하기 때문에 분리해서 한 단계씩 함수를 적용해보고 익숙해지시면 중복형태도 사용해 보시기 바랍니다.

 

중복 함수로 한 번에 구하기
* 중복 함수로 한 번에 구하기

 

  - "Find 함수"에 대서 이런저런 제한이나 차이점을 "Search 함수"와 구분해서 많이 설명을 한 듯한데.
  - 사실 거의 대부분은 "기본 형태"로 사용을 많이 하고 조금 특수하거나 많은 데이터의 검증과정에서는 복잡하게 사용이 됩니다.
  - 중복 함수 등 복잡한 수식이 필요한 경우 한 셀에 모든 수식을 입력하기보다는 나누어서 단계별로 수식을 입력하고
  - 필요하면 마지막에 한 개의 수식으로 합쳐서 사용하는 것도 방법입니다.

 

 

 

 

** 핵심 요약 :Find, Search 함수 사용법 - 내가 찾는 문자가 어느 위치에 있는지 찾아보자(차이점, 와일드카드 찾기)

 

1. 함수 설명

  - Find 함수는  텍스트 문자열에 찾고자 하는 문자의 "위치"를 찾아 주는 함수이다.
  - 우리는 찾고자 하는 "문자"가 몇 번째 위치에서 시작하는지를 알 수 있다.
  - "Find 함수"로 원하는 문자의 위치를 찾고 "Left, Right, Mid 함수"로 추출하는 방식으로 많이 사용한다.
  - 그리고 유사 함수로 "Search 함수"가 있다.


2. Find 함수의 구문, 사용방법 (차이점, 와일드카드로 찾기)

  - FIND(find_text, within_text, [start_num])

  - 첫 번째 인수는 "find_text"로. "찾고자 하는 텍스트"이다.
  - 텍스트(=문자)인 경우 반드시 큰따옴표( " " )를 사용해 주자.
  - 두 번째 인수는 "within_text" : 찾고자 하는 텍스트가 있는/포함(within)된 문자열(=텍스트, text)로 셀주소를 지정해 준다.
  - 세 번째 인수는 "start_num" : 검색을 시작할 위치로 생략을 하게 되면 처음부터(=1) 검색해 준다.

  - 항상 문장 전체에서 처음부터 몇 번째 위치인지를 알려준다.
  - Find 함수를 중첩으로 사용하면 2, 3, … 번째 나오는 텍스트의 위치를 찾을 수 있다
  - Search 함수 : 동일하게 찾아 주는데 조금 다르다 : 대/소분자 구분 없음, 와일드카드(*,?) 사용가능

  - 와일드카드란 모든 문자를 을 대체해 주는 "*"와 한 문자만을 대체해 주는 "?"가 있다.
  - "*,?" 자체를 문자로 찾고 싶다면 "~*", "~?" 형태로 입력해주면 된다.


3. Find 함수 사용해 보기

  - 고객 메일 주소(Jindo34@naver.com)에서 "고객 ID(Jindo34)" 부분만을 분리하고자 한다면
  - "Find 함수"로 "@"의 위치를 먼저 찾아서
  - "Left 함수"로 ("@"의 위치 - 1)까지 추출해 주면 된다.
  - 이때 함수를 중첩해서 ("=LEFT(B3, FIND("@", B3)-1)") 사용할 수도 있지만 어려우면 분리해서 하나씩 찾아보자.

 

039. (엑셀 기초 함수) Find 함수-연습문제.xlsx
0.02MB

 

 

 

[엑셀 기초 강좌] - 999. 엑셀 기초 함수 목차 (완료)

 

999. 엑셀 기초 함수 목차 (완료)

[엑셀 기초 강좌] - 029. (엑셀 기초 함수) Sum함수 : 숫자의 합계를 구해보자 [엑셀 기초 강좌] - 030. (엑셀 기초 함수) Max, Min 함수 - 최대값, 최소값을 구해보자 [엑셀 기초 강좌] - 031. (엑셀 기초 함

nextmeok.tistory.com

 

 

 

* 엑셀 관련 궁금하신 거나 어려운 점이 있으시면 자유롭게 질문을 해주세요.
* 가능한 도움을 드릴 수 있도록 하겠습니다.
* 저도 많이 알지는 못하지만 누구나 그렇듯 시작이란 게 있고 경험이란 게 다를 것 같습니다.
* 편하게 문의하시면 됩니다. 저도 모를 수 있다. 감안해 주시고.

  - ILU, SH -

반응형

댓글