티스토리 뷰

엑셀 RANK 함수는 주어진 범위( 배열 )내에서 원하는 값의 통계적 순위를 구하여 반환한다. 전달된 목록안에 중복값이 있다면 이들은 중복 순위로 구해진다.

엑셀 2010 에서는 RANK 함수가 RANK.EQ 로 함수명이 변경되었다. 하지만, 호환 함수 목록의 RANK 함수명을 사용한다면 엑셀 2010 이전 버전과 호환이 가능하다.

엑셀 RANK 함수 기본 설명

설명 : RANK 함수는 지정 범위( 배열 )안에서 요구 값의 순위를 계산하여 반환한다. RANK 와 RANK.EQ 는 중복값이 있을 경우 낮은 순위를 결과로 반환한다.
구문1 : RANK( number, ref, [order] )
구문2 : RANK( 순위 계산 값, 순위 참조 범위, [정렬기준] )
인수 :
    number : 순위 구하기를 원하는 값
    ref : number 인수를 포함하는 값들의 참조 범위( 배열 )
    [order] : ref 인수를 어떻게( 오름차순/내림차순 ) 정렬하여 순위를 구할지 지정. 옵션 인수
        0 : 내림차순 정렬, 생략시 기본값
        1 : 오름차순 정렬, 모든 0 아닌 값은 1 로 처리

참고1 : RANK 함수가 말하는 통계적 순위란 정렬 기준에 따라 참조 범위의 숫자를 배치하고 각 값의 위치를 숫자로 지정하는 것이다. 이 모든 처리는 RANK 함수의 내부적으로 진행되고 결과만이 반환된다.

엑셀 RANK 함수 사용 예제

[그림1] RANK 함수로 순위를 구하는 예제[그림1] RANK 함수로 순위를 구하는 예제



[그림1] 의 ref 인수를 정렬해 나열해 봅니다.
- 0 ( 내림차순 ) : 20, 12, 10, 7, 7, 5, 3
- 1 ( 오름차순 ) : 3, 5, 7, 7, 10, 12, 20

사용 예제1 : =RANK( A4, A4:A10 )
사용 결과1 : 3

A4 셀의 순위를 구하기 위해 RANK 함수를 사용한다. 순위를 비교할 범위는 A4:A10 이다. A4 셀의 값, 10 을 범위에서 비교하여 그 순위를 구하는 것이다. 순위를 구하는 기준은 내림차순이다. 세 번째 인수가 생략되어 있기에 기본값인 0 ( 내림차순 )이 적용되는 것이다.

ref 인수를 내림차순으로 나열하면 10 은 3 번째에 위치한다. 따라서 결과( 순위 )는 3 이 반환된다.

사용 예제2 : =RANK( 20, A4:A10, 1 )
사용 결과2 : 7

20 의 순위를 A4:A10 의 ref 값들과 비교하여 구한다. 그 기준은 3 번째 인수가 1 이기에 오름차순이 된다. 따라서, A4:A10 범위의 값은 3, 5, 7, 7, 10, 12, 20 으로 내부 정렬되고 20 의 위치인 7 이 순위로 반환된다.

사용 예제3 : =RANK( 7, A4:A10, 0 )
사용 결과3 : 4

순위를 계산할 범위인 A4:A10 의 값을 내림차순( 3번째 인수 0 ) 정렬하여 7 의 위치를 반환한다. 그런데 A4:A10 을 내림차순 정렬하면 7 이 4 번째와 5 번째에 2번 중복하여 위치한다. 이때 반환되는 순위는 ???

ref 범위안에 중복값이 존재하고 그 값의 순위를 구한다면 RANK 나 RANK.EQ 함수는 낮은 순위를 반환한다. 7 의 위치인 4 번째와 5 번째 중에서 낮은 값인 4 를 중복값 모두의 순위로 지정한다는 것이다.

참고2 : 엑셀 2010 에서 RANK 함수가 RANK.EQ 와 RANK.AVG 함수로 세분화된 이유는 이 중복 순위 때문이다. RANK.EQ낮은 순위를 반환하고 RANK.AVG 함수는 중복값들의 평균 순위를 반환한다. RANK.AVG 함수로 예제3의 수식을 작성하면 결과는 (4+5) / 2 = 4.5 가 반환된다.

사용 예제4 : =RANK( A6, A4:A10 )
사용 결과4 : 6

A6 셀의 값, 5 로 A4:A10 의 범위에서 순위를 계산한다. order 인수는 생략되어 있다. 따라서, 정렬 기준은 기본값인 내림차순( 0 )으로 지정된다. 내림차순 20, 12, 10, 7, 7, 5, 3 으로 내부 정렬하면 5 의 순위는 6 이 된다. 중복값 7 의 위치가 4 번째와 5 번째이기 때문이다.

엑셀 RANK 함수 오류

RANK 함수에서 발생하는 대부분의 오류는 다음과 같다.
- RANK 함수에 전달된 number 인수가 ref 인수 범위에 존재하지 않는다면 #N/A 오류를 발생한다.
- ref 인수의 값이 텍스트로 표현된 수치라면 이를 해석하지 못한다. 이로 인한 #N/A 오류도 주의하자.

같은 범위를 참조하여 각 셀 순위 구하기

A4:A10 범위를 ref 인수로 놓고 각 셀을 number 인수로 하여 B4:B10 범위에 내림차순 순위를 구해보자.
1) B4 셀에 셀 포인터를 놓는다.
2) =RANK( A4, $A$4:$A$10 ) 수식을 입력한다.
3) A4 셀의 값으로 A4:A10 범위에서 순위를 구한다. ref 인수를 절대 참조한 이유는 B4 셀의 수식을 아래로 수식 복사할 때 ref 인수가 바뀌지 않게 하려는 것이다.
4) B4 셀의 채우기 핸들을 B10 까지 당겨 수식을 복사한다.

동일한 범위를 참조하여 범위내 각 셀 값의 순위를 구하는 수식을 작성할 때는 ref 인수를 절대 참조하는 것이 핵심이다.

[엑셀] 상대 참조, 절대 참조, 혼합 참조의 차이 배우기 :
http://secstart.tistory.com/154

언제까지 엑셀에서 RANK 함수를 호환 함수 목록으로 제공한다는 보장은 없다. 엑셀 2010 이상 버전에서는 이제 변경된 함수명인 RANK.EQ 를 사용하는 습관을 들이도록 하자.

게시물 관련 링크 :
[엑셀 함수] 통계 RANK 함수로 순위 구하기 + 컴활 기출 :
http://secstart.tistory.com/165
[함수] 컴활 3급 실기 엑셀 통계 RANK 함수 + 기출 풀이 :
http://secstart.tistory.com/110
컴활 2급 실기 2006년 2회 A형 기출 문제 풀이 - 계산작업 :
http://secstart.tistory.com/198
컴활 2급 실기 2006년 1회 A형 기출 문제 풀이 - 계산작업 :
http://secstart.tistory.com/202

마늘빵.


댓글