핵심 요약
- 순위는
=RANK.EQ(C3, $C$3:$C$8)처럼 구하고, 순위를 매길 범위는 반드시$로 고정한 뒤 아래로 채웁니다. - 세 번째 인수를 생략하거나 0이면 큰 값이 1위, 1을 넣으면 작은 값이 1위입니다.
- 동점은 RANK·RANK.EQ가 같은 높은 순위를, RANK.AVG가 평균 순위를 줍니다. 동점을 나누려면 COUNTIFS로 보조 기준을 더합니다.
고객별 주문 건수나 직원별 실적 옆에 1위, 2위 순위를 붙이고 싶을 때 정렬을 하면 원래 표 순서가 바뀌어 버립니다. 표 순서는 그대로 두고 순위만 옆 열에 표시하려면 RANK 계열 함수를 씁니다.
이 글에서는 RANK 함수의 인수, 내림차순·오름차순 순위, RANK·RANK.EQ·RANK.AVG의 차이, 그리고 동점일 때 다른 기준으로 순위를 나누는 방법까지 정리합니다.
RANK 함수 구조와 인수
=RANK(숫자, 범위, 순서)
=RANK.EQ(숫자, 범위, 순서)
| 인수 | 뜻 | 예시 |
|---|---|---|
| 숫자 | 순위를 알고 싶은 값(보통 셀 하나) | C3 |
| 범위 | 비교할 전체 값 목록. 복사할 것이므로 절대 참조 | $C$3:$C$8 |
| 순서(선택) | 생략 또는 0이면 큰 값이 1위, 0이 아닌 값(보통 1)이면 작은 값이 1위 | 1 |
주문 건수로 순위 매기기
예시 표에는 고객 여섯 명의 주문 건수(C열)와 주문 금액(D열)이 있습니다. 주문 건수가 많은 고객부터 순위를 매겨 보겠습니다.
- E3 셀에
=RANK(C3, $C$3:$C$8)를 입력합니다. - E3의 채우기 핸들을 E8까지 끌어 채웁니다.
결과는 DeSean Marcus(2건) 5위, Melinda Smith·Silvia Seyler·Don Coulter(각 3건) 공동 2위, Adele Jett(4건) 1위, Raphael Lobato(1건) 6위입니다. 3건인 고객이 세 명이라 2위를 함께 받고, 그다음 순위는 3위가 아닌 5위로 건너뜁니다.
범위를 C3:C8처럼 상대 참조로 쓰고 아래로 채우면 C4:C9, C5:C10으로 범위가 밀려 순위가 틀리게 나옵니다. 숫자 인수(C3)는 상대 참조, 범위는 절대 참조로 섞어 쓰는 것이 핵심입니다.
주문 금액 기준 오름차순 순위
주문 금액 기준으로 바꾸려면 범위만 D열로 바꿉니다. =RANK(D3, $D$3:$D$8)에서 DeSean Marcus의 $40은 $80, $50, $45 다음이므로 4위입니다.
이번에는 금액이 적은 고객을 1위로 보고 싶다면 세 번째 인수에 1을 넣습니다.
=RANK(D3, $D$3:$D$8, 1)의 결과로 $15인 Raphael Lobato가 1위, $80인 Melinda Smith가 6위가 되고, $40인 DeSean Marcus는 3위입니다. 불량률이나 처리 시간처럼 작을수록 좋은 지표에 이 방식을 씁니다.
RANK, RANK.EQ, RANK.AVG 차이
| 함수 | 동점 처리 | 버전 |
|---|---|---|
RANK | 동점에 같은 높은 순위(2, 2, 2) | 모든 버전. 이전 버전 호환용 |
RANK.EQ | RANK와 같음 | 엑셀 2010 이후 |
RANK.AVG | 동점에 차지한 순위의 평균(3, 3, 3) | 엑셀 2010 이후 |
RANK와 RANK.EQ는 결과가 같습니다. 엑셀 2007 이하 사용자와 파일을 주고받는다면 RANK를, 아니라면 이름이 명확한 RANK.EQ를 쓰는 편이 좋습니다. RANK는 새 버전에서도 계속 쓸 수 있지만 함수 목록에서는 호환성(Compatibility) 범주로 분류됩니다.
주문 3건인 세 고객은 2위, 3위, 4위 자리를 나눠 가지므로 RANK.AVG는 (2+3+4)÷3 = 3을 돌려줍니다. 동점이 두 명이면 2.5처럼 소수가 나올 수 있습니다.
동점일 때 순위 나누기
주문 건수가 같으면 주문 금액이 큰 고객을 앞 순위로 두고 싶다고 해 보겠습니다. 보조 열을 쓰는 방법은 다음과 같습니다.
- E열: 주문 건수 순위
=RANK(C3, $C$3:$C$8) - F열: 주문 금액 순위를 100으로 나눔
=RANK(D3, $D$3:$D$8)/100 - G열: 두 값을 더함
=SUM(E3, F3)→ 예: 5 + 0.04 = 5.04 - H열: 합계가 작은 순서로 최종 순위
=RANK(G3, $G$3:$G$8, 1)
공동 2위였던 세 고객이 금액 순서에 따라 Melinda Smith 2위, Silvia Seyler 3위, Don Coulter 4위로 나뉩니다. 금액 순위를 100으로 나누는 방식은 행이 100개 미만일 때만 안전하므로, 데이터가 많으면 1,000 이상으로 나눠야 합니다.
보조 열 없이 한 셀에서 같은 결과를 내려면 COUNTIFS로 "주문 건수는 같고 금액은 더 큰 고객 수"를 더합니다.
=RANK.EQ(C3, $C$3:$C$8) + COUNTIFS($C$3:$C$8, C3, $D$3:$D$8, ">"&D3)
Silvia Seyler는 기본 순위 2위에, 같은 3건이면서 금액이 $50보다 큰 Melinda Smith 1명이 더해져 3위가 됩니다. 금액까지 같으면 여전히 공동 순위로 남습니다.
구글 스프레드시트에서는
구글 스프레드시트에도 RANK, RANK.EQ, RANK.AVG가 있고 인수 순서(값, 범위, 오름차순 여부)도 같습니다. 세 번째 인수를 생략하면 큰 값이 1위인 점, 범위를 $로 고정해야 하는 점도 엑셀과 동일하며 COUNTIFS를 이용한 동점 처리도 그대로 쓸 수 있습니다.
자주 묻는 질문
RANK 결과가 #N/A로 나옵니다.
순위를 구하려는 값이 범위 안에 없을 때 생깁니다. 범위를 상대 참조로 써서 복사하는 동안 범위가 밀린 경우가 가장 흔하므로 $C$3:$C$8처럼 고정됐는지 확인하세요.
빈 셀이나 텍스트가 섞여 있으면 어떻게 되나요?
범위 안의 빈 셀과 텍스트는 비교에서 제외됩니다. 다만 범위의 숫자가 텍스트로 저장되어 있으면 그 값도 비교에서 빠져 순위가 틀어지므로 숫자로 변환한 뒤 사용하세요.
순위대로 표를 정렬하고 싶습니다.
순위 열을 만든 뒤 데이터 탭 > 정렬에서 순위 열을 오름차순으로 정렬하면 됩니다. 수식은 범위를 절대 참조로 고정했기 때문에 정렬 후에도 순위가 유지됩니다.
함께 보면 좋은 글: 엑셀 절대참조 상대참조 차이와 $ 사용법, 엑셀 정렬 방법 가나다순부터 다중 기준까지, 엑셀 MAX MIN LARGE 함수로 최댓값 찾기
댓글
댓글 남기기