엑셀 RANK 함수로 순위 매기기

· 엉클벤 엑셀함수(스프레드시트)

핵심 요약

  • 순위는 =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(숫자, 범위, 순서)
=RANK.EQ(숫자, 범위, 순서)
인수뜻예시
숫자순위를 알고 싶은 값(보통 셀 하나)C3
범위비교할 전체 값 목록. 복사할 것이므로 절대 참조$C$3:$C$8
순서(선택)생략 또는 0이면 큰 값이 1위, 0이 아닌 값(보통 1)이면 작은 값이 1위1

주문 건수로 순위 매기기

예시 표에는 고객 여섯 명의 주문 건수(C열)와 주문 금액(D열)이 있습니다. 주문 건수가 많은 고객부터 순위를 매겨 보겠습니다.

  1. E3 셀에 =RANK(C3, $C$3:$C$8)를 입력합니다.
  2. E3의 채우기 핸들을 E8까지 끌어 채웁니다.
Customer, # orders, Order value, Rank 열의 표에서 E3에 =RANK(C3,$C$3:$C$8)를 입력하고 아래 칸에 2, 1, 2, 2, 6 순위가 채워진 화면
주문 건수 범위를 절대 참조로 고정한 RANK 수식 (영문판 엑셀 화면 · 이미지 출처: Deskbright's Ultimate Excel Book, 저자 허락 하에 사용)

결과는 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을 넣습니다.

E3에 =RANK(D3,$D$3:$D$8,1)을 입력해 주문 금액이 가장 적은 15달러 고객이 1위, 80달러 고객이 6위로 표시된 화면
순서 인수에 1을 넣어 작은 금액부터 순위를 매긴 모습 (영문판 엑셀 화면 · 이미지 출처: Deskbright's Ultimate Excel Book, 저자 허락 하에 사용)

=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.EQRANK와 같음엑셀 2010 이후
RANK.AVG동점에 차지한 순위의 평균(3, 3, 3)엑셀 2010 이후

RANK와 RANK.EQ는 결과가 같습니다. 엑셀 2007 이하 사용자와 파일을 주고받는다면 RANK를, 아니라면 이름이 명확한 RANK.EQ를 쓰는 편이 좋습니다. RANK는 새 버전에서도 계속 쓸 수 있지만 함수 목록에서는 호환성(Compatibility) 범주로 분류됩니다.

E3에 =RANK.AVG(C3,$C$3:$C$8)를 입력해 주문 건수 3건인 세 고객의 순위가 모두 3으로 표시된 화면
RANK.AVG는 공동 순위를 평균값 3으로 표시합니다 (영문판 엑셀 화면 · 이미지 출처: Deskbright's Ultimate Excel Book, 저자 허락 하에 사용)

주문 3건인 세 고객은 2위, 3위, 4위 자리를 나눠 가지므로 RANK.AVG는 (2+3+4)÷3 = 3을 돌려줍니다. 동점이 두 명이면 2.5처럼 소수가 나올 수 있습니다.

동점일 때 순위 나누기

주문 건수가 같으면 주문 금액이 큰 고객을 앞 순위로 두고 싶다고 해 보겠습니다. 보조 열을 쓰는 방법은 다음과 같습니다.

  1. E열: 주문 건수 순위 =RANK(C3, $C$3:$C$8)
  2. F열: 주문 금액 순위를 100으로 나눔 =RANK(D3, $D$3:$D$8)/100
  3. G열: 두 값을 더함 =SUM(E3, F3) → 예: 5 + 0.04 = 5.04
  4. H열: 합계가 작은 순서로 최종 순위 =RANK(G3, $G$3:$G$8, 1)
# orders rank, Order value rank, Rank sum 보조 열을 만들고 H3에 =RANK(G3,$G$3:$G$8,1)을 입력해 최종 순위 5, 2, 1, 3, 4, 6이 표시된 화면
보조 열의 순위 합계로 동점을 나눈 최종 순위 (영문판 엑셀 화면 · 이미지 출처: Deskbright's Ultimate Excel Book, 저자 허락 하에 사용)

공동 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 함수로 최댓값 찾기

벤

글쓴이 · 엉클벤

엑셀·스프레드시트 함수, AI 활용법, 컴퓨터·스마트폰 생활 팁을 따라 하기 쉽게 정리합니다. 틀린 내용은 연락처로 알려 주세요. 소개 보기

📚 벤스페이퍼 엑셀 강좌

기초부터 피벗 테이블까지 배우는 순서대로 정리한 엑셀 강좌 전체 목차에서 다음 글을 이어서 볼 수 있습니다.

Powered by Blogger