• 최초 작성일: 2002-05-17
  • 최종 수정일: 2026-09-29
  • 조회수: 35 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 순위별 가산점 부여하기

들어가기 전에

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

영업사원이나 학생처럼 여러 사람을 성적순으로 줄 세운 뒤, 등수 구간에 따라 차등 점수(가산점)를 매겨야 하는 경우가 종종 있습니다. 10명 단위로 규칙적으로 나눌 수도 있고, 상위 3명은 20점, 그다음 6명은 15점처럼 인원수가 들쭉날쭉한 구간으로 나눠야 할 수도 있습니다. 독자 한 분이 보내주신 질문을 바탕으로 두 가지 방법을 모두 살펴보겠습니다.

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

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

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


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

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

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

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

순위별 가산점 부여하기

핵심 요약

RANK와 ROUNDUP을 조합하면 10명 단위로 규칙적인 가산점을, INDEX와 MATCH를 조합하면 인원수가 불규칙한 구간별 가산점을 부여할 수 있습니다.

  • =ROUNDUP(RANK(순위,범위,1)/10,0)으로 10명 단위 가산점을 계산합니다.
  • RANK의 Order 인수를 1로 지정해 내림차순 순위를 구합니다.
  • 불규칙한 구간은 참조 테이블 + INDEX/MATCH로 해결합니다.

질문 하나

100명의 영업사원을 평가하려고 합니다. 판매목표대비 판매실적으로 달성율을 만들고 그 달성율로 상위 10명 -> 10점, 그하위 10명 -> 9점, ……… 마지막 하위 10명은 1점을 부여하려고 합니다. 어떤 함수를 쓰는지 부탁드립니다.

자주 들러서 좋은 답변을 주시는 드래곤볼님께서 아래와 같이 답변을 주셨네요. ^^

>1위점수로 내림차순 정렬한뒤, >=roundup(rank(셀,범위)/10,0) 해보세요. >정렬에 유의하시길.

이 방법을 약간 수정해 보았습니다. 일단 예제 테이블을 하나 만들고…

예제 파일을 내려받으려면 여기를 클릭하세요.

번호점수순위가산점
1254.2=RANK(B24,$B$24:$B$123)=ROUNDUP(RANK(B24,$B$24:$B$123,1)/10,0)
2990.9=RANK(B25,$B$24:$B$123)=ROUNDUP(RANK(B25,$B$24:$B$123,1)/10,0)
3650.6=RANK(B26,$B$24:$B$123)=ROUNDUP(RANK(B26,$B$24:$B$123,1)/10,0)
4766.2=RANK(B27,$B$24:$B$123)=ROUNDUP(RANK(B27,$B$24:$B$123,1)/10,0)
5304.4=RANK(B28,$B$24:$B$123)=ROUNDUP(RANK(B28,$B$24:$B$123,1)/10,0)
6456.3=RANK(B29,$B$24:$B$123)=ROUNDUP(RANK(B29,$B$24:$B$123,1)/10,0)
7714.3=RANK(B30,$B$24:$B$123)=ROUNDUP(RANK(B30,$B$24:$B$123,1)/10,0)
8508.4=RANK(B31,$B$24:$B$123)=ROUNDUP(RANK(B31,$B$24:$B$123,1)/10,0)
9342.9=RANK(B32,$B$24:$B$123)=ROUNDUP(RANK(B32,$B$24:$B$123,1)/10,0)

이 테이블에서 '순위' 필드는 없어도 되지만 시각적으로 확인해 보시라는 의미에서 일부러 집어 넣은 것입니다. 가산점 부분에는 이런 수식이 들어있습니다.

=ROUNDUP(RANK(B24,$B$24:$B$123,1)/10,0)

대개의 분들이 다 알고 있는 ROUNDUP 함수와 RANK 함수를 사용하였군요. ^^

(1) RANK 함수를 사용하여 순위를 먼저 구하고…(이 때 Order 인수값을 1로 하여 내림차순으로 순위를 구한 점에 유의!)

(2) 그런 다음, 10등씩 내려가면서 점수를 차등 적용하므로 10으로 나누어 줍니다. 간단하지요?

그런데 가산점을 부여할 때 10명씩 규칙적으로 구분되는 것이 아니라 불규칙하게 점수를 부여한다면 어떻게 해야 할까요?

예제 파일을 내려받으려면 여기를 클릭하세요.

번호점수순위가산점비고
1655.9=RANK(B145,$B$145:$B$174)=INDEX($B$179:$B$182,MATCH(C145,$A$179:$A$182,-1))
2507.0=RANK(B146,$B$145:$B$174)=INDEX($B$179:$B$182,MATCH(C146,$A$179:$A$182,-1))최상위 3명에게는 20점
3828.1=RANK(B147,$B$145:$B$174)=INDEX($B$179:$B$182,MATCH(C147,$A$179:$A$182,-1))그다음 6명에게는 15점
4291.4=RANK(B148,$B$145:$B$174)=INDEX($B$179:$B$182,MATCH(C148,$A$179:$A$182,-1))또 그다음 9명에게는 9점
5998.9=RANK(B149,$B$145:$B$174)=INDEX($B$179:$B$182,MATCH(C149,$A$179:$A$182,-1))나머지 사람들에 대해서는 5점

(1) 가산점 부여의 기준이 되는 테이블을 만듭니다.

인원수가산점
305
99
615
320

(2) 이제는 널리(?) 알려진 INDEX와 MATCH 함수를 중첩하여 수식을 작성합니다.

=INDEX($B$179:$B$182,MATCH(C145,$A$179:$A$182,-1))

참조 테이블을 하나 만들어야 한다는 것이 약간 번거롭기는 하지만 두번째 방법이 좀더 융통성이 있는 방법이라고 할 수 있을 것입니다.

정리 — 규칙적/불규칙적 가산점 부여 방법

구간 방식 사용 함수 수식 예
10명 단위 규칙적RANK + ROUNDUP=ROUNDUP(RANK(B24,$B$24:$B$123,1)/10,0)
인원수 불규칙RANK + INDEX + MATCH=INDEX($B$179:$B$182,MATCH(C145,$A$179:$A$182,-1))

자주 묻는 질문 (FAQ)

Q1. 10명씩 규칙적으로 가산점을 매기려면 어떤 수식을 쓰나요?

=ROUNDUP(RANK(B24,$B$24:$B$123,1)/10,0) 수식을 사용합니다. RANK 함수로 내림차순 순위를 구한 뒤 10으로 나누고 ROUNDUP으로 올림 처리하면, 1~10등은 1점, 11~20등은 2점처럼 10명 단위로 점수가 차등 적용됩니다.

Q2. RANK 함수에서 Order 인수를 1로 지정하는 이유는 무엇인가요?

Order 인수를 1로 지정하면 값이 큰 순서(내림차순)로 순위를 매기게 됩니다. 점수가 높을수록 좋은 등수(1등)가 되도록 하기 위해 이 예제에서는 Order를 1로 설정한 점에 유의해야 합니다.

Q3. 인원수가 불규칙한 구간별로 가산점을 부여하려면 어떻게 하나요?

가산점 부여 기준이 되는 참조 테이블(인원수, 점수)을 별도로 만든 다음, =INDEX($B$179:$B$182,MATCH(C145,$A$179:$A$182,-1)) 처럼 INDEX와 MATCH 함수를 중첩해서 사용합니다. 참조 테이블을 만드는 번거로움은 있지만 10명 단위가 아닌 임의의 구간에도 자유롭게 적용할 수 있습니다.

마치며

RANK 함수를 기본으로, 구간이 규칙적이면 ROUNDUP을, 구간이 불규칙하면 INDEX·MATCH 참조 테이블을 조합하면 어떤 형태의 등수별 가산점 체계도 수식 하나로 자동화할 수 있습니다.