rand(life)

엑셀함수 스페셜2 : 사용자정의함수 - 구간별로 등급을 매길때 본문

컴퓨터/엑셀

엑셀함수 스페셜2 : 사용자정의함수 - 구간별로 등급을 매길때

flogsta 2009. 4. 5. 19:46
먼저, 이것도 제가 만든 것이 아니라는 것을 밝힙니다.
출처: http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=5ARZk66HcEzE0Zn1M6DZk7j0g2hvr0h7

하지만 아주 기초적인 내용으로 봐서, 엑셀관련 자격증 수험서에 나오는 예제가 아닌가 합니다.
다름 아니라, 점수가 90점 이상이면 A, 80점이상이면 B, 70점 이상이면 C, 그 아래는 D로 등급을 매기고 싶을때가 있습니다.

지난 글에서 각 급수마다 점수를 부여하는 것을 HLOOKUP함수를 이용해 수식을 만든적이 있습니다. 하지만 반대로, 학생들의 점수에 따라 급수를 부여한다면 어떻게 해야할까요?  이번에도 HLOOKUP함수를 이용해서 만들어보았습니다.

100점을 받은 학생은 1급, 95점을 받은 학생은 2급을 받았지만, 그 사이의 범위에 있는 96점이나 97점의 경우에는 어떻게 할것인지를 HLOOKUP함수에서는 지정되어있지 않습니다. 그래서 96점을 받은 학생2는 #N/A오류가 출력됩니다.

그렇다면, 범위를 조건으로 주어서 95~100점은 1급, 90~94점은 2급으로 주려면 어떻게 할까요?

일단 제일 쉽게 생각하면, IF문을 이용해 다음처럼 할 수 있을것입니다.

=IF(A1>=95,"1급",IF(A1>=90,"2급","3급"))


하지만, 3급이상이 있을때는 어떻게 할까요? 10급까지 있다면 IF문을 9번 반복해서 써야할 것입니다. 이런 경우를 위해 다른 사람들이 사용자정의함수를 만들어 두었습니다.
사용자정의함수를 만드는 방법은 이전글을 참고하세요. 아래에서는 사용자함수의 코드만을 보여드립니다.


Public Function fn등급(승진시험)
 Select Case 승진시험
  Case Is >= 95: fn등급 = "A"
  Case Is >= 90:  fn등급 = "B"
  Case Is >= 85:  fn등급 = "C"
  Case Is >= 80:  fn등급 = "D"
  Case Is >= 75:  fn등급 = "E"
  Case Is >= 70:  fn등급 = "F"
  Case Else:  fn등급 = "G"
 End Select
End Function



(승진시험)이라는 부분은 변수를 지정한 것이므로, 다른 문자로 바꾸셔도 상관없습니다. 단, 엑셀에서 함수나 명령어로 사용하는 이름(END, SELECT, FUNCTION CASE 등등) 은 제외해야합니다.