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개이다. 그리고 대소문자를 구별한다.
3. 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처럼 엉뚱한 결과를 주게 된다.
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)
실제로 확인해 보면 아래와 같이 어떤 길이의 숫자를 이용해도 문제없이 가져오는 것을 알 수 있다.
[Excel] 문자열에서 값 추출하기 (MID/MIDB)
1. 왜 쓰지? 엑셀을 사용하다 보면 문자열에서 값을 추출하고 싶을 때가 있다. 예를 들면 아래처럼 어디서 받아온 데이터가 이것저것 섞여있고 패턴이 일정할 때 필요한 값만 빼내서 정리 할 수
satlab.tistory.com
최근댓글