1. 왜 쓰지?
엑셀을 사용하다 보면 문자열에서 값을 추출하고 싶을 때가 있다. 예를 들면 아래처럼 어디서 받아온 데이터가 이것저것 섞여있고 패턴이 일정할 때 필요한 값만 빼내서 정리할 수 있다. 이런 경우에 생년만 추출해서 통계를 낸다던가 맨 뒤 두 글자만 추출해서 지역 통계를 낼 때 쓸 수 있다.
김영희/19920324/010-xxx-1234/서울
김철수/19971214/010-xxx-4567/부산
...
오피스 설명에는 MID는 1 byte 문자세트에 쓰고 MIDB는 2 byte 문자 세트에 사용한다고 되어있다. 그러나 MID 함수는 생각보다 똑똑해서 1 byte를 쓰는 영문이든 2 byte를 쓰는 한글이든 상관없이 num_chars 인수를 각 언어의 '글자 개수'로 인식한다. 굳이 byte 단위로 문자열을 불러오고 싶을 때는 MIDB를 사용한다.
조금 더 설명하면 일바이트 문자 세트 (single byte chracter set)는 문자 하나가 1 byte에 해당하는 숫자나 영문자가 해당하고 한글이나 특수문자는 문자 하나에 2 byte를 차지하는 이바이트 문자 세트(double byte chracter set)에 해당한다.
2. MID 사용법
=MID(text, start_num, num_chars)
=MIDB(text, start_num, num_bytes)
MID는 추출할 텍스트, 추출을 시작할 위치와 가져올 문자열의 개수를 인수로 갖는다. 추출할 텍스트는 직접 입력할 수도 있지만 아래처럼 셀을 지정해서 가져올 수도 있다.
그림 1에서 MID 함수의 수식을 보면 \$C\$2열의 텍스트에서 19번째 부터 2개의 글자 "24"를 가져온다. 주의할 점은 24 대신 5를 입력하게 되면 "5"가 아닌 글자 두 개 "5K"를 가져오게 되므로 의식적으로 "05"라고 입력하거나 MID 수식을 변경해줘야 한다.
3. MID에서 start_num의 지시 위치
\$C\$2셀에서 24가 시작하는 위치가 19인데 공백과 n 뒤의 줄바꿈(alt+enter)도 하나의 문자로 취급한 것이다. 아래 그림 2에 시작 위치가 어느 문자를 가리키는지 나타냈다.
4. FIND와 MID의 조합
FIND 함수를 이용하면 문자열에서 찾고자하는 텍스트의 위치를 쉽게 찾을 수 있다. 따라서 위의 예처럼 문자를 "하나 둘 셋.." 하고 일일이 셀 필요도 없이 FIND 함수로 우리가 원하는 숫자 앞에 있는 "="의 위치를 찾도록 하면 더 편리하고 유연하게 기능을 구현할 수 있다.
위의 예제에서는 꼭 두 글자만 가져와야 해서 한자리 수 온도를 쓸 때 "05"와 같이 입력하는 불편이 있었다. 더욱이 세 자리는 사용할 수도 없기 때문에 매번 수식을 수정해야 하는 불편함이 있다. FIND 함수를 두 번 이용하면 가져올 글자의 자릿수에 상관없이 기준이 되는 두 글자 사이의 값을 자유자재로 가져오도록 할 수 있어 FIND와 MID를 조합해서 사용하는 방법을 아래 글을 따로 작성했다.
[Excel] 텍스트 위치 찾기 (FIND/FINDB)
1. 왜 쓰지? MID/MIDB 함수를 사용해서 텍스트에서 원하는 위치의 문자열을 가져올 수 있었다. 어디에 그 문자열이 있을지 문자열의 순서를 정확하게 알고 있다면 MID 함수만 써도 충분하지만 가끔
satlab.tistory.com
최근댓글