rand(life)
1일1함수 (25) SEARCH 함수 : 아무개문자 사용가능한 문자열찾기 본문
SEARCH는 이전에 배운 FIND함수의 발전된 버전입니다. 아무개 문자가 사용가능하며, 대소문자 구별을 하지 않는다는 점이 FIND함수와의 차이점입니다.
표로 정리하면 다음과 같습니다.
FIND SEARCH 아무개 문자 X O 대소문자 구별 O X
구문 SEARCH(find_text,within_text,start_num) find_text 찾을 텍스트입니다. within_text find_text를 찾을 텍스트입니다. start_num with_text에서 찾기 시작할 문자의 위치입니다. 주의
|
"아무개문자"는 와일드카드(WILDCARD)의 우리말 표현입니다.
물음표(?)는 문자 하나에 해당하고, 별표(*)는 문자 개수에 상관없이 아무 문자(들)을 대신합니다. 예를 들어, "대?동"를 찾으라고 하면, "대치동, 대한동, 대소동…"등이 검색되겠지만, "대*동"을 찾으라고하면, 앞에 들었던 예들 외에도, "대한4동, 대치13동, 대소만리포동…"등도 검색됩니다.
위의 그림은 지난시간에 한 개의 셀안에 들어있는 내용에서 학교,반,번,이름을 추출하는 함수를 FIND와 MID를 사용해서 추출하는 수식을 작성해 본 것입니다. 그런데 만약 학교 이름이 "반포 고등학교"라면 "반"에 해당하는 란에 12가 나오지 않고
#VALUE! 오류가 납니다. 그 이유는, FIND함수에서 "반"이라는 글자가 나오는 위치를 찾으면 값이 1인데, 거기서 2를 빼라고 했으므로 결국 MID(A2,-1,2)와 같은 수식이 되어 "A2셀에서 -1번째문자에서부터 2개의 문자를 추출하라"는 의미가 되는 것입니다. 오류가 나는 것은 당연하겠지요.
그럼 어떻게 수정을 해야할까요? 방법은 두가지가 있습니다.
첫번째는 도움말에 보시면 start_num을 사용하여 지정된 문자 수만큼 건너뛸 수 있습니다.는 부분이 있습니다. 따라서 맨 처음에 나오는 "반"은 건너뛰고 그 다음부터 검색하도록 뒤에 2를 붙이는 것입니다. 즉, FIND함수 부분을 FIND("반",A2)에서 FIND("반",A2,2)로 바꾸는 것입니다. 전체 수식은 MID(A2,FIND("반",A2,2)-2,2) 가 되겠지요.
두번째는 SEARCH함수에서 아무개문자를 사용할 수 있다는 것을 이용하는 것입니다. 즉, "반" 앞에는 "학년"이라는 글자가 항상 있으므로, "학년"뒤에 아무 문자나 오고, "반"이라는 글자가 나오는 위치를 찾는 것입니다. 수식은 다음과 같습니다.
=MID(A1,SEARCH("학년*반",A1)+3,2) |
수식을 보시면, "반"이 아니라 "학년*반"을 입력했다는 것과, -2가 아니라 +3이라는 점이 다릅니다. "학년*반"으로 아무개문자를 이용한 것은, 아시다시피 학교이름에 있는 "반"자를 제외하기위한 것이고, +3을 붙인 것은, "학년*반"이 나오는 위치로 반환되는 값은 "학"자의 위치(10)이므로, 여기서 뒤로 3칸을 더가야(+3) 반의 숫자가 시작되는 위치(13)가 나오기 때문입니다.
2009/04/29 - [컴퓨터/엑셀] - 1일1함수 (24) FIND함수 : 문자열에서 지정 문자의 위치 찾기
2009/04/23 - [컴퓨터/엑셀] - 1일1함수 (20) MID함수 : 문자열에서 지정한 위치의 문자 추출