핵심 요약
- 지점별·반별처럼 그룹 안에서만 순위를 매기려면
=COUNTIFS(그룹 범위,내 그룹,점수 범위,">"&내 점수)+1을 씁니다. - "같은 그룹에서 나보다 높은 사람 수 + 1"이 곧 내 순위라는 원리입니다. 동점이면 같은 순위가 나옵니다.
- 작을수록 1등이어야 하면
">"를"<"로 바꾸고, 범위에는 반드시$를 붙여 고정합니다.
한 달 실적표를 정리하다 보면 전체 순위보다 "우리 지점 안에서 몇 등인지"가 더 궁금할 때가 많습니다. 지점마다 인원과 규모가 달라서 전체 순위만으로는 비교가 어렵기 때문입니다. RANK 함수는 범위 전체를 한 줄로 세우기 때문에 지점을 나눠 주지 않습니다. 지점별로 표를 쪼개 따로 순위를 매기는 방법도 있지만, 사람이 늘거나 지점이 바뀌면 다시 해야 합니다.
학교에서도 같은 상황이 나옵니다. 학년 전체 성적표에서 반별 석차를 따로 구하는 경우입니다. 엑셀 공부를 하는 분이라면 조건을 여러 개 거는 COUNTIFS를 이렇게 "순위 계산기"로 바꿔 쓰는 방법을 알아 두면 응용 폭이 넓어집니다. 목적별 함수 조합 시리즈의 한 편으로, 예제 표에 수식을 넣고 한 겹씩 풀어 봅니다.
예제 표 — 지점별 계약 건수
A열 이름, B열 지점, C열 이번 달 계약 건수입니다. D열에 지점 안 순위, E열에 비교용 전체 순위를 구합니다. 이름과 숫자는 모두 가상입니다.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 이름 | 지점 | 계약 건수 | 지점 순위 | 전체 순위 |
| 2 | 김민준 | 강남 | 12 | ||
| 3 | 이서연 | 분당 | 9 | ||
| 4 | 박지호 | 강남 | 15 | ||
| 5 | 최수아 | 일산 | 7 | ||
| 6 | 정하윤 | 분당 | 14 | ||
| 7 | 강도윤 | 강남 | 12 | ||
| 8 | 윤지우 | 일산 | 11 | ||
| 9 | 한지민 | 분당 | 6 | ||
| 10 | 임서준 | 강남 | 8 | ||
| 11 | 송하은 | 일산 | 9 |
지점이 정렬되지 않고 섞여 있어도 괜찮습니다. 강남의 김민준과 강도윤은 둘 다 12건으로 동점입니다.
완성 수식 — D2에 넣고 11행까지 채우기
D2 셀(지점 순위):
=COUNTIFS($B$2:$B$11,B2,$C$2:$C$11,">"&C2)+1
E2 셀(비교용 전체 순위):
=RANK.EQ(C2,$C$2:$C$11)
- D2와 E2에 수식을 입력합니다. D2에
2, E2에3이 나오면 정상입니다. - D2:E2를 함께 선택하고 채우기 핸들을 11행까지 끌어내립니다.
| A 이름 | B 지점 | C 건수 | D 지점 순위 | E 전체 순위 | |
|---|---|---|---|---|---|
| 2 | 김민준 | 강남 | 12 | 2 | 3 |
| 3 | 이서연 | 분당 | 9 | 2 | 6 |
| 4 | 박지호 | 강남 | 15 | 1 | 1 |
| 5 | 최수아 | 일산 | 7 | 3 | 9 |
| 6 | 정하윤 | 분당 | 14 | 1 | 2 |
| 7 | 강도윤 | 강남 | 12 | 2 | 3 |
| 8 | 윤지우 | 일산 | 11 | 1 | 5 |
| 9 | 한지민 | 분당 | 6 | 3 | 10 |
| 10 | 임서준 | 강남 | 8 | 4 | 8 |
| 11 | 송하은 | 일산 | 9 | 2 | 6 |
윤지우는 전체로는 5위지만 일산 지점에서는 1위입니다. 강남의 김민준·강도윤은 동점이라 둘 다 2위이고, 다음 사람 임서준은 3위를 건너뛰고 4위가 됩니다. RANK.EQ가 동점을 처리하는 방식과 같습니다.
수식 풀어 보기 — 안쪽부터 한 겹씩
2행 김민준(강남, 12건)으로 따라가 봅니다.
1단계: 비교 조건 만들기 ">"&C2
&는 글자를 이어 붙이는 연산자입니다. ">"와 C2의 값 12를 붙이면 ">12"라는 조건 글자가 됩니다. "12보다 큰 것"이라는 뜻입니다. Microsoft 문서에서도 셀 값을 조건에 쓸 때 이렇게 비교 연산자와 셀 참조를 &로 연결하도록 안내합니다.
2단계: COUNTIFS로 "같은 지점에서 나보다 많은 사람" 세기
COUNTIFS($B$2:$B$11,B2,$C$2:$C$11,">12")는 두 조건을 모두 만족하는 행만 셉니다.
- 조건 1: 지점(B열)이 B2와 같은 강남인 행 → 김민준, 박지호, 강도윤, 임서준
- 조건 2: 건수(C열)가 12보다 큰 행 → 그중 박지호(15)만 해당
결과는 1입니다. 강도윤은 12건이라 "12보다 큰" 조건에 들지 않아 세지 않습니다. 그래서 동점자끼리는 같은 값이 나옵니다.
3단계: 1을 더하기
나보다 많은 사람이 1명이면 나는 2등입니다. 1+1 = 2. 박지호처럼 나보다 많은 사람이 0명이면 0+1 = 1등이 됩니다.
| 이름 | 같은 지점에서 나보다 많은 사람 | +1 = 지점 순위 |
|---|---|---|
| 박지호(강남 15) | 0 | 1 |
| 김민준(강남 12) | 1 (박지호) | 2 |
| 강도윤(강남 12) | 1 (박지호) | 2 |
| 임서준(강남 8) | 3 (박지호·김민준·강도윤) | 4 |
자주 막히는 곳
범위에 $를 빼먹으면 아래쪽 순위가 틀립니다. $ 없이 B2:B11로 쓰고 채우면 11행에서는 범위가 B11:B20으로 밀려, 송하은 위에 있는 일산 사람들을 보지 못합니다. 실제로 계산해 보면 송하은이 2위가 아니라 1위로 잘못 나옵니다. 범위는 $B$2:$B$11처럼 고정하고, 내 지점과 내 점수(B2, C2)만 상대 참조로 둡니다.
- 따옴표 안에 셀 주소를 넣은 경우 —
">C2"로 쓰면 C2의 값이 아니라 "C2"라는 글자와 비교하게 되어 아무것도 세지 않습니다. 그래서 모두 1위로 나옵니다. 연산자만 따옴표 안에 두고">"&C2로 이어 붙입니다. - 작을수록 1등인 경우 — 지각 횟수나 처리 시간처럼 낮은 값이 좋은 기준이라면
"<"&C2로 바꿉니다. 예제에 적용하면 강남에서 8건인 임서준이 1위가 됩니다. - 범위 크기를 맞추기 — Microsoft 문서에 따르면 COUNTIFS에서 추가 범위는 첫 범위와 행·열 수가 같아야 합니다.
$B$2:$B$11과$C$2:$C$11처럼 시작과 끝 행을 똑같이 둡니다. - 숫자가 텍스트로 들어간 경우 — 건수 칸이 왼쪽 정렬돼 있거나 초록 삼각형이 보이면 텍스트로 저장된 숫자일 수 있습니다. 이런 값은 크기 비교에서 빠질 수 있으니 숫자로 바꿔 둡니다.
다른 방법
SUMPRODUCT로 같은 결과 내기
=SUMPRODUCT(($B$2:$B$11=B2)*($C$2:$C$11>C2))+1
괄호 안 두 비교식은 행마다 참(1)·거짓(0)을 만들고, 곱하면 두 조건이 모두 참인 행만 1이 됩니다. SUMPRODUCT가 그 1들을 더하면 COUNTIFS와 같은 "나보다 많은 사람 수"가 나옵니다. 예제 10명 모두 COUNTIFS 결과와 같았습니다. 조건 안에서 계산을 해야 할 때(예: 날짜 열에서 월만 뽑아 비교) 이 방식이 쓰기 편합니다.
동점 없이 순위를 하나씩 매기기
시상처럼 동점자에게도 서로 다른 순위가 필요하면, 위에서 먼저 나온 사람을 앞 순위로 두는 방법이 있습니다.
=COUNTIFS($B$2:$B$11,B2,$C$2:$C$11,">"&C2)+COUNTIFS($B$2:B2,B2,$C$2:C2,C2)
뒤쪽 COUNTIFS는 범위의 시작만 고정하고($B$2:B2) 끝은 한 줄씩 늘어나게 해서, "지금까지 나온 같은 지점·같은 점수 사람 수"를 셉니다. 예제에서 김민준은 2위, 아래에 있는 강도윤은 3위가 되고 임서준은 그대로 4위입니다.
자주 묻는 질문
그룹 조건을 두 개(지점과 월) 걸 수 있나요?
COUNTIFS는 범위와 조건을 쌍으로 계속 추가할 수 있습니다. 예를 들어 월이 F열에 있다면 =COUNTIFS($B$2:$B$11,B2,$F$2:$F$11,F2,$C$2:$C$11,">"&C2)+1처럼 조건 쌍을 하나 더 넣습니다.
"3/4위"처럼 그룹 인원과 함께 보여 줄 수 있나요?
순위 수식 뒤에 &"/"&COUNTIFS($B$2:$B$11,B2)를 붙이면 됩니다. 예제에서 임서준은 "4/4", 윤지우는 "1/3"으로 나옵니다. 결과가 글자가 되므로 이 칸으로는 정렬 대신 D열 숫자 순위를 쓰세요.
빈 칸(아직 입력 안 한 사람)은 어떻게 되나요?
건수가 빈 행에도 수식이 계산되어 의미 없는 순위가 붙을 수 있습니다. 빈 행에 순위를 표시하지 않으려면 =IF(C2="","",COUNTIFS($B$2:$B$11,B2,$C$2:$C$11,">"&C2)+1)처럼 IF로 감쌉니다.
함께 보면 좋은 글: 엑셀 RANK 함수로 순위 매기기, 엑셀 COUNTIF COUNTIFS 조건 개수 세기, 엑셀 SUMPRODUCT 함수 사용법 · 전체 목록은 엑셀 가이드 목차에서 볼 수 있습니다.
참고: COUNTIFS 함수 (Microsoft 지원), RANK.EQ 함수 (Microsoft 지원), SUMPRODUCT 함수 (Microsoft 지원)
댓글
댓글 남기기