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

들어가기 전에

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

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

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

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

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


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

📊 신간 전자책(PDF) · 287쪽 · 아이엑셀러 단독 판매

엑셀 대시보드를 만드는 최적의 '표준 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 참조 테이블을 조합하면 어떤 형태의 등수별 가산점 체계도 수식 하나로 자동화할 수 있습니다.