rand(life)

1일1함수 (24) FIND함수 : 문자열에서 지정 문자의 위치 찾기 본문

컴퓨터/엑셀

1일1함수 (24) FIND함수 : 문자열에서 지정 문자의 위치 찾기

flogsta 2009. 4. 29. 05:30

오늘은 FIND함수입니다. 찾으려는 문자가 어디에 있는지 그 위치를 반환합니다.

 

FIND(find_text,within_text,start_num)

find_text  찾을 텍스트입니다.

within_text  찾으려는 텍스트를 포함하는 문자열입니다.

start_num  검색을 시작하는 문자를 지정합니다. within_text에서 첫 문자의 문자 번호는 1입니다. start_num을 생략하면 1로 간주됩니다.

주의

  • FIND는 대/소문자를 구분하며, 와일드카드 문자를 사용할 수 없습니다. 대/소문자를 구분하지 않고 검색하거나 와일드카드 문자를 사용하려면 SEARC를 사용해야 합니다.
  • find_text가 ""(빈 텍스트)이면 FIND는 검색 문자열의 첫 문자를 찾습니다. 즉 start_num번째 또는 첫 번째 문자를 찾습니다.
  • find_text는 와일드카드 문자를 포함할 수 없습니다.
  • find_text가 within_text에 없으면 #VALUE! 오류 값이 반환됩니다.
  • start_num이 0보다 크지 않으면 #VALUE! 오류 값이 반환됩니다.
  • start_num이 within_text의 길이보다 길면 #VALUE! 오류 값이 반환됩니다.
  • start_num을 사용하여 지정된 문자 수만큼 건너뛸 수 있습니다. 예를 들어 FIND의 경우 텍스트 문자열 "AYF0093.YoungMensApparel"에서 텍스트 문자열의 설명 부분에 있는 첫 번째 "Y"의 번호를 찾으려면 텍스트의 일련 번호 부분은 검색하지 않도록 start_num을 8로 설정합니다. FIND는 8번째 문자부터 시작하여 이후의 문자에서 find_text를 찾아 번호 9를 반환합니다. FIND는 start_num이 1보다 큰 경우 건너뛴 문자 수도 계산하여 항상 within_start의 시작 부분부터 센 문자 번호를 반환합니다.

 

 

전에 배웠던 MID함수와 조합하면 많은 일을 할 수 있습니다. 전에 포스팅했던, 문항별개인응답표에서 학년,반,번호,이름을 추출하는 수식은 바로 MID와 FIND를 이용한 것입니다.

 

 

"학년"에 해당하는 수식만 살펴보겠습니다.

=MID(A1,FIND("학년",A2)-1,1)

 

MID함수 부분은, A1셀에서 FIND("학년",A1)-1 의 수식이 반환하는 값만큼의 위치에서부터 한 글자를 반환하라는 의미입니다.

FIND함수 부분은, "학년"이라는 글자가 A1셀에서 몇번째 위치에 있는가를 구하는 수식입니다.

그러므로, 전체 함수는 A1셀에서 "학년"이라는 글자가 나오는 위치보다 한 글자 앞의 위치에서부터 1글자를 반환하라는 의미입니다.

 


그런데, 10반 이후의 학생에는 문제가 없지만, 9반까지의 학생들은 한가지 문제가 있습니다.

보시는 것처럼 반에 해당하는 2앞에 빈칸이 하나 삽입되어있는 것입니다. 수식에서 두 개의 문자를 반환하라고 되어있으므로, 두자리 숫자의 반에서는 제대로 보이지만, 한자리수 반에서는 그 앞에 빈칸까지 출력됩니다.

어떻게 이것을 해결할 수 있을까요?


두 가지 방법이 있습니다.

첫번째는 이전포스트에서 설명한 것처럼, 복사—선택하여붙여넣기—값으로 붙여 넣으시면 다음 그림처럼 셀 앞에 삼각형의 오류표시가 뜹니다. 


"텍스트형식으로 저장된 숫자"라는 오류표시입니다. 임의의 셀에 숫자 1을 입력하고, 그 셀을 복사해서 오류난 셀전체를 선택한 후 오른쪽 클릭—선택하여붙여넣기—"연산"에서"곱하기"를 하시면 모두 숫자로 변환되면서 앞의 공백도 사라집니다.  (이전 포스트에 그림과 함께 자세하게 설명해 두었습니다)


두번째 방법은 수식을 이용한 것으로, 약간 복잡합니다.

다음 수식을 입력합니다.

=MID(A1,FIND("학년",A1,1)+3,FIND("반",A1,1)-FIND("학년",A1,1)-3)

수식을 해석하면, A1셀에서 "학년"이라는 글자가 나오는 자리 뒤의 세번째 자리에서부터 시작하여 "반"이라는 글자가 나오는 위치에서 "학년"이라는 글자가 나오는 위치를 뺀 만큼보다 3글자 적은 수의 글자를 출력하라는 의미입니다.

 

함수

해석

결과

=MID(A1,

A1셀에서

 

FIND("학년",A1,1)+3,

"학년"이라는 글자가 나오는 자리 뒤의 세번째 자리에서부터 시작하여

13의 위치에서부터시작하여

FIND("반",A1,1)-

"반"이라는 글자가 나오는 위치에서

14

FIND("학년",A1,1)-3)

"학년"이라는 글자가 나오는 위치를 뺀 만큼보다

14-10=4

 

3글자 적은 수의 글자를 출력하라

4-3=1 (1글자출력)

 

연습문제를 드리겠습니다. "번호"란에도 같은 문제가 있습니다. 한자리숫자의 번호를 가진 학생들은 앞에 공백이 삽입된 채로 출력됩니다. 위의 수식을 응용하여, 앞에 공백이 나오지 않도록하여 "번호"란에 학생들의 번호가 출력될 수 있도록 수식을 만들어보세요.


2009/04/23 - [컴퓨터/엑셀] - 1일1함수 (20) MID함수 : 문자열에서 지정한 위치의 문자 추출
2008/05/03 - [컴퓨터/엑셀] - 반, 번호, 이름 따로 떼어내기 [엑셀에서 문자열 추출함수]

2008/05/09 - [컴퓨터/엑셀] - [엑셀]값으로 선택하여 붙여넣기, 텍스트를 숫자로 변환하기