[엑셀 모바일] RANK 함수로 통계적 순위 계산하기

엑셀 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

마늘빵.