rand(life)

1일1함수 (25) SEARCH 함수 : 아무개문자 사용가능한 문자열찾기 본문

컴퓨터/엑셀

1일1함수 (25) SEARCH 함수 : 아무개문자 사용가능한 문자열찾기

flogsta 2009. 4. 30. 05:30

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에서 찾기 시작할 문자의 위치입니다.

주의

  • SEARCH 를 사용하면 텍스트 문자열에서 다른 텍스트 문자열이나 문자의 위치를 확인할 수 있고, 이 정보를 바탕으로 MID 또는 REPLACE 함수를 사용하여 텍스트를 변경할 수 있습니다.
  • SEARCH 는 대/소문자를 구분하지 않습니다. 대/소문자를 구분하여 검색하려면 FIND 를 사용합니다.
  • find_text에 와일드카드 문자인 물음표(?)와 별표(*)를 사용할 수 있습니다. 물음표는 문자 하나에 해당하고, 별표는 개수에 상관없는 일련의 문자에 해당합니다. 실제 물음표나 별표를 찾으려면 문자 앞에 물결표(~)를 입력합니다.
  • find_text가 발견되지 않으면 #VALUE! 오류 값이 반환됩니다.
  • start_num을 생략하면 1로 간주됩니다.
  • start_num이 0보다 크지 않거나 within_text의 길이보다 크면 #VALUE! 오류 값이 반환됩니다.
  • start_num을 사용하여 지정된 문자 수만큼 건너뛸 수 있습니다. 예를 들어 SEARCH의 경우 텍스트 문자열 "AYF0093.YoungMensApparel"에서 텍스트 문자열의 설명 부분에 있는 첫 번째 "Y"의 번호를 찾으려면 텍스트의 일련 번호 부분은 검색하지 않도록 start_num을 8로 설정합니다. SEARCH는 8번째 문자부터 시작하여 이후의 문자에서 find_text를 찾아 번호 9를 반환합니다. SEARCH는 start_num이 1보다 큰 경우 건너뛴 문자 수도 계산하여 항상 within_start의 시작 부분부터 센 문자 번호를 반환합니다.

 

"아무개문자"는 와일드카드(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함수 : 문자열에서 지정한 위치의 문자 추출