FIND_MID.xlsx
0.01MB

1. 왜 쓰지?

 FIND와 FINDB 함수를 이용하면 어떤 텍스트에서 우리가 찾는 텍스트의 위치를 알아낼 수 있다. 패턴이 있으나 길이가 때때로 변하는 데이터에서 값을 찾을 때나 원하는 값이 존재하는지 확인할 수도 있다. 만약 원하는 값이 존재하지 않는다면 FIND와 FIND 함수는 VALUE 에러를 반환한다.  

 

2. FIND 함수의 사용법

=FIND(find_text, within_text, [start_num])
=FINDB(find_text, within_text, [start_num])

 

 FIND와 FINDB 함수는 찾을 문자열(find_text),  탐색할 문자열(within_text), 그리고 시작 위치(start_num)를 인수로 갖는다. 탐색할 문자열에서 첫 글자의 위치는 1이다. 따라서 1부터 시작하는 양의 정수를 입력해야 한다.

 

 FIND와 FINDB 함수는 MID/MIDB 함수와 마찬가지로 FIND 함수는 영문자와 숫자와 같은 1 byte 문자용이고 FINDB는 한글과 일본어 같은 2 byte 문자용이다. 한글에 FIND 함수를 이용하면 한글자당 1개씩 위치를 이용하고 FINDB를 쓰면 2개씩 위치를 잡아먹는다. 공백은 언제나 1개이다. 그리고 대소문자를 구별한다.

 

그림 1. FIND와 FINDB가 지시하는 문자열의 위치

 

3. FIND 함수의 사용 예

 

그림 2. FIND 함수의 사용

 

 그림 2를 보면 "우리집 강아지 똘이는 똘똘해"가 있는 \$B\$2 셀에서 "똘"이라는 글자가 처음 나오는 위치를 알려주는 경우를 확인할 수 있다.

 

 첫 번째 FIND 함수를 사용했을 때 "똘"이라는 글자를 \$B\$2에서 찾으면 9번째에 있다고 알려준다.

 

 앞부분을 무시하고 그 뒤부터 검색하고 싶을 때는 두 번째 경우처럼 시작 위치를 "10"으로 입력하면 열 번째 문자부터 탐색을 시작한다.

 

 FINDB를 쓰면 한글 한 글자를 문자 2개로 인식하기 때문에 15라는 위치를 돌려준다.

 

4. MID와 FIND의 조합

 MID/MIDB 함수를 이용하면 텍스트에서 원하는 위치의 문자열을 가져올 수 있다. 어디에 그 문자열이 있을지 문자열의 순서를 정확하게 알고 있다면 MID 함수만 써도 충분하지만 가끔은 어디에 있을지 모르거나 위치가 상대적일 수 있다.

 

 아래 MID 함수 예제에서는 "ΔT=xxK" 문자열 에서 xx를 가져와 계산에 이용했다. 이때 MID 함수에서 위치를 직접 지정해 글자 두 개를 가져오도록 했기 때문에 xx를 꼭 두 자리 숫자로 써야 하는 문제점이 있었다. 예를 들어 5도를 입력하고 싶을 때는 "05"라고 입력해야 했다. 아래 그림 3과 4를 보면 항상 글자 두 개를 가져오기 때문에 ΔT=5K로 입력할 경우 그림 4처럼 엉뚱한 결과를 주게 된다.

 

그림 3. MID 사용법

 

그림 4. ΔT=5K 일때 숫자와 문자가 섞인 "5K"를 가져와 발생한 에러

 

 FIND 함수를 이용하면 ΔT나 K를 찾아서 그 주위의 값을 가져오도록 할 수 있다. 기준이 되는 위치를 찾고 그 위치에서 '앞으로 한 개' 또는 '뒤에 두 개'와 같이 상대적인 위치를 쓸 수 있다. 

 

 우리가 원하는 온도 부분은 문자 "="와 "K" 사이에 있다. 따라서 다음과 같이 "="과 "K"를 찾는 FIND 함수를 생각할 수 있다.

"=" 찾기 : =FIND("=", \$C\$2) → 18
"K" 찾기 : =FIND("K", \$C\$2) → 20

 

 따라서 MID 함수를 쓸 때 등호 "="을 찾아서 그보다 한 칸 뒤(+1)부터 시작하고 가져올 문자의 개수는 "K"의 위치에서 가져올 첫 번째 문자의 위치를 뺀 것이 된다. 따라서 아래와 같이 적용할 수 있다.

가져오기 시작할 위치("="의 위치 + 1)
    =FIND("=", \$C\$2) + 1

가져올 문자의 개수
    =FIND("K", \$C\$2) - (FIND("=", \$C\$2) + 1)

 

 MID 함수에 적용하면 아래와 같다.

=MID(\$C\$2, FIND("=", \$C\$2) + 1, FIND("K", \$C\$2) - FIND("=", \$C\$2) - 1)

 

 실제로 확인해 보면 아래와 같이 어떤 길이의 숫자를 이용해도 문제없이 가져오는 것을 알 수 있다.

 

그림 5. 숫자가 한 자리일 때

 

그림 6. 숫자가 두 자리 일 때

 

그림 7. 숫자가 세 자리 일 때

 

 

[Excel] 문자열에서 값 추출하기 (MID/MIDB)

1. 왜 쓰지?  엑셀을 사용하다 보면 문자열에서 값을 추출하고 싶을 때가 있다. 예를 들면 아래처럼 어디서 받아온 데이터가 이것저것 섞여있고 패턴이 일정할 때 필요한 값만 빼내서 정리 할 수

satlab.tistory.com

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기