• 최초 작성일: 2002-07-16
  • 최종 수정일: 2026-09-29
  • 조회수: 28 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 순위 구하기 응용

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

지난 시간에 불연속 영역에 대한 순위 구하기에 대해 살펴보았습니다(X0275 강좌 참고). 기왕 순위 구하기에 대해 얘기가 나온 김에 조금 더 살펴보도록 하지요. 이번에는 동점자 처리에 대한 이야기입니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

순위 구하기 응용

핵심 요약: RANK·COUNTIF로 동점자에게도 다른 순위 부여하기

RANK 함수는 같은 점수에 동일한 순위를 매기는 문제가 있습니다. COUNTIF 함수를 조합하면 먼저 나온 데이터에 우선 순위를 주어 동점자에게도 서로 다른 순위를 매길 수 있습니다.

  • 일반 RANK: 동점자는 같은 순위를 받고, 다음 순위는 건너뜁니다.
  • RANK+COUNTIF 응용: 먼저 나온 데이터에 우선 순위를 주어 동점자를 구분합니다.
  • 오름차순 응용: RANK의 order 인수와 COUNT 함수를 조합해 반대 방향 순위도 구할 수 있습니다.

[표 1] 일반적으로 순위를 구하고자 할 때 아래와 같이 RANK 함수를 사용하게 됩니다. 물론 RANK 함수 말고도 COUNTIF 함수나 배열 수식을 사용해도 동일한 결과를 얻을 수 있습니다.

DataRank1Rank2Rank3
80=RANK(B14,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B14)+1=SUM(N(B14<$B$14:$B$23))+1
70=RANK(B15,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B15)+1=SUM(N(B15<$B$14:$B$23))+1
30=RANK(B16,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B16)+1=SUM(N(B16<$B$14:$B$23))+1
80=RANK(B17,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B17)+1=SUM(N(B17<$B$14:$B$23))+1
60=RANK(B18,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B18)+1=SUM(N(B18<$B$14:$B$23))+1
50=RANK(B19,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B19)+1=SUM(N(B19<$B$14:$B$23))+1
70=RANK(B20,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B20)+1=SUM(N(B20<$B$14:$B$23))+1
40=RANK(B21,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B21)+1=SUM(N(B21<$B$14:$B$23))+1
60=RANK(B22,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B22)+1=SUM(N(B22<$B$14:$B$23))+1
60=RANK(B23,$B$14:$B$23)=COUNTIF($B$14:$B$23,">"&B23)+1=SUM(N(B23<$B$14:$B$23))+1

세 가지 방식의 수식을 정리하면 다음과 같습니다.

Rank1=RANK(B14,$B$14:$B$23)
Rank2=COUNTIF($B$14:$B$23,">"&B14)+1
Rank3{=SUM(N(B14<$B$14:$B$23))+1}

그런데 RANK 함수는 같은 점수가 있을 경우 동일한 순위를 매긴다는 문제가 있습니다(위의 표에서 Rank1 부분의 굵게 표시한 순위를 보세요). 물론 이 문제는 COUNTIF 함수를 사용하든, 배열 수식을 사용하든 여전히 남게 됩니다.

이제 아래의 [표 2]를 보세요. 동일한 점수에 대해서도 순위가 서로 다르게 매겨져 있지요?

DataRank4
80=RANK(B43,$B$43:$B$52)+COUNTIF($B$43:B43,B43)-1
70=RANK(B44,$B$43:$B$52)+COUNTIF($B$43:B44,B44)-1
30=RANK(B45,$B$43:$B$52)+COUNTIF($B$43:B45,B45)-1
80=RANK(B46,$B$43:$B$52)+COUNTIF($B$43:B46,B46)-1
60=RANK(B47,$B$43:$B$52)+COUNTIF($B$43:B47,B47)-1
50=RANK(B48,$B$43:$B$52)+COUNTIF($B$43:B48,B48)-1
70=RANK(B49,$B$43:$B$52)+COUNTIF($B$43:B49,B49)-1
40=RANK(B50,$B$43:$B$52)+COUNTIF($B$43:B50,B50)-1
60=RANK(B51,$B$43:$B$52)+COUNTIF($B$43:B51,B51)-1
60=RANK(B52,$B$43:$B$52)+COUNTIF($B$43:B52,B52)-1

C43 셀에는 이런 수식이 들어 있습니다.

Rank4 =RANK(B43,$B$43:$B$52)+COUNTIF($B$43:B43,B43)-1

우리가 아주 잘 알고 있는 RANK 함수와 COUNTIF 함수를 사용하였습니다. 다만 COUNTIF 함수에서 range 부분, 즉 조건을 검색할 셀 범위를 지정해 준 부분을 유심히 살펴보세요. 절대 주소를 사용하여 범위가 가변적으로 변동이 되도록 해 주었습니다.

그런데 맨 끝에 -1을 해 준 것은 무엇 때문일까요? 그것은 순위를 계산할 때 자기 자신을 계산에서 빼주기 위함입니다. (동점자 처리에 대한 부분은 X0137 강좌를 참고하시기 바랍니다)

위의 [표 1]과 [표 2]에서는 오름차순으로 순위를 구하였습니다. 이번에는 반대의 경우를 살펴볼까요?

DataRank5Rank6
80=RANK(B73,$B$73:$B$82,1)=COUNT($B$73:$B$82)-(RANK(B73,$B$73:$B$82)+COUNTIF($B$73:B73,B73)-2)
(이하 동일한 패턴으로 B82 행까지 이어집니다)

오름차순으로 동일한 점수에 대해 순위를 다르게 매기는 방법은 조금 더 까다로와 보입니다. 아래와 같은 수식이 사용되었습니다.

Rank5 =COUNT($B$73:$B$82)-(RANK(B73,$B$73:$B$82)+COUNTIF($B$73:B73,B73)-2)

내림차순으로 순위를 구할 때와 마찬가지로 생소한 함수는 전혀 사용되지 않았습니다. 하지만 초보님들은 이해하기 쉽지만은 않지요? 대체로 복잡한 수식의 경우 맨 안쪽부터 분석해 나오면 이해가 빠릅니다만, 이 수식은 맨 앞쪽부터 세 도막으로 나누어 잘 살펴보세요.

힌트를 좀 드리자면, 어떤 학급에 10명의 학생이 있는데 나만 등수를 모르고 다른 학생들은 모두 자신의 등수를 알고 있다고 가정합니다. 이런 상황에서 나의 등수를 알아내려면 어떻게 해야 할까요? 반 전체 인원을 알고 있으니 나보다 등수가 높은(우수한) 사람들의 수를 빼고, 다시 나와 같은 등수를 가진 사람의 수를 빼버리면 되겠지요? 그러면 뒤에 -2를 빼 준 것은 왜일까요? 그것은 숙제랍니다. 위의 Rank4에서 사용한 방법과 크게 다르지 않습니다.

정리 — 동점자 순위 처리 수식 비교

구분 수식
내림차순, 동점자 동일 순위=RANK(B14,$B$14:$B$23)
내림차순, 동점자 구분=RANK(B43,$B$43:$B$52)+COUNTIF($B$43:B43,B43)-1
오름차순, 동점자 구분=COUNT($B$73:$B$82)-(RANK(B73,$B$73:$B$82)+COUNTIF($B$73:B73,B73)-2)

자주 묻는 질문 (FAQ)

Q1. RANK 함수는 동점자를 어떻게 처리하나요?

RANK 함수는 값이 같은 데이터에는 모두 같은 순위를 부여합니다. 예를 들어 2등이 두 명이면 둘 다 2등으로 표시되고, 그 다음 순위는 3등이 아니라 4등으로 건너뜁니다.

Q2. 동점자에게도 서로 다른 순위를 매기려면 어떻게 하나요?

=RANK(B43,$B$43:$B$52)+COUNTIF($B$43:B43,B43)-1 처럼 RANK 결과에 COUNTIF로 구한 '자기 자신까지의 동일 값 개수'를 더하고 1을 빼주면, 먼저 나온 데이터일수록 더 높은(작은 숫자의) 순위를 갖도록 동점자를 구분할 수 있습니다.

Q3. 오름차순으로 순위를 구할 때는 수식이 어떻게 달라지나요?

RANK 함수의 세 번째 인수(order)를 1로 지정하면 오름차순 순위를 구합니다. 동점자를 구분해야 할 때는 =COUNT(전체범위)-(RANK(셀,범위)+COUNTIF(범위처음:현재셀,현재셀)-2) 형태의 수식을 사용해 내림차순 계산 결과를 거꾸로 뒤집어 줍니다.

마치며

RANK 함수 하나만으로는 동점자를 구분할 수 없지만, COUNTIF와 조합하면 실무에서 자주 필요한 '동점자 구분 순위'를 손쉽게 구현할 수 있습니다. 오름차순·내림차순에 따라 수식 구조가 달라지는 점에 유의하며 직접 실습해 보시기 바랍니다.