rand(life)

엑셀함수 스페셜 - VLOOKUP함수를 이용해 구간별 값 찾기 본문

컴퓨터/엑셀

엑셀함수 스페셜 - VLOOKUP함수를 이용해 구간별 값 찾기

flogsta 2009. 6. 29. 18:08
점수를 구간으로 나누어 각 구간마다 등급을 매기고 싶을 때가 있습니다.

지난번에 소개한 것처럼 사용자정의함수를 이용하는 방법도 있습니다만, 좀 더 간단한 방법을 보여드리려고 합니다.

바로 vlookup 함수를 사용하는 방법입니다.

VLOOKUP함수의 구문중 다음 주의사항을 한번 보시죠.

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

range_lookup  정확하게 일치하는 값을 찾을 것인지, 근사값을 찾을 것인지를 결정하는 논리값입니다.
  • TRUE이거나 생략되면 정확한 값이나 근사값을 반환합니다. 정확하게 일치하는 값이 없으면 lookup_value보다 작으면서 그 다음으로 가장 큰 값을 반환합니다.

    table_array의 첫 번째 열 값은 오름차순으로 정렬해야 합니다. 그렇지 않으면 VLOOKUP 함수를 실행하여 올바른 결과를 얻을 수 없습니다.


오늘 할 일은 위의 주의사항중 밑줄친 부분의 내용을 이용하는 것입니다.


위 그림과 같이 학생들의 성적이 있고, 각 성적에 따른 등급을 매기고 싶습니다. 지난번의 글에서 제시한 상황과 같습니다. 이때, 다른 시트나 빈 공간아무곳에나 오른쪽과 같은 등급표를 작성합니다. 왼쪽의 숫자는 각 등급의 최소값을 보여줍니다. 즉, 오른쪽의 등급표의 의미는
0~49점은 F,
50~59점은 E,
60~69점은 D,
70~79점은 C,
80~89점은 B,
90점 이상은 A라는 의미입니다.



그리고 학생들의 등급이 들어가는 셀의 수식을 다음과 같이 입력합니다.

=VLOOKUP(B2,$F$3:$G$8,2)

그러면 각 성적에 따라 등급이 매겨졌습니다. VLOOKUP함수의 마지막 인수를 TRUE로 주거나 생략했을때 작거나 같은 값을 찾는다는 성질을 이용한 것입니다.

사용자정의 함수를 쓰지 않아도 되니 편합니다. 위에 설명한 두 가지만 주의하시면 됩니다. 한번 더 설명하면,

1. 오른쪽의 등급표를 작성할때, 숫자를 오름차순으로, (즉 작은 숫자가 위에 오도록) 배열해야한다는 점
2. 숫자는 해당 등급의 최소값이라는 점, (즉, C등급에 70이라고 쓴 것은 C등급을 받으려면 70점이상이 된다는 점)

물론, 수식 맨 마지막에 FALSE나 0을 쓰면 오류가 나타나겠죠? TRUE를 쓰거나 생략해야합니다.


2009/03/20 - [컴퓨터/엑셀] - 1일1함수 보충(2-1): VLOOKUP 함수에서 주의할 점
2009/03/18 - [컴퓨터/엑셀] - 1일1함수(2) : VLOOKUP 세로방향 데이터 목록에서 값 가져오기
2009/04/05 - [컴퓨터/엑셀] - 엑셀함수 스페셜2 : 사용자정의함수 - 여러개의 조건을 사용하여 분류할때