엑셀 COUNTIFS 함수로 2열 조건별 순위 구하는 방법

엑셀 COUNTIFS 함수로 2열 조건별 순위 구하는 방법

엑셀에서 두 개 열을 하나의 조건으로 묶은 뒤, 각 행의 순위를 구해야 할 때가 많습니다. 예를 들어 지점+상품, 부서+사원, 카테고리+모델처럼 2열이 함께 기준이 되는 경우입니다.

이럴 때는 RANK 함수보다 COUNTIFS 함수가 더 실무적입니다. COUNTIFS는 여러 조건을 동시에 만족하는 행을 셀 수 있어서, 2열 조건별 그룹 순위를 계산하기에 적합합니다.

빠른 해결: 바로 쓰는 수식

아래와 같이 데이터가 있다고 가정하겠습니다.

A열 B열 C열 D열
지역 상품 매출 순위

D2 셀에 아래 수식을 입력한 뒤 아래로 복사하세요.

=COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2,$C$2:$C$100,">"&C2)+1

이 수식은 A열 값이 같고, B열 값도 같으면서, 현재 C열 값보다 큰 값의 개수를 센 다음 1을 더해 순위를 반환합니다.

왜 COUNTIFS로 2열 조건별 순위를 구할까?

일반적인 RANK 함수는 전체 범위 안에서 순위를 구합니다. 하지만 실무에서는 전체 순위보다 같은 그룹 안에서의 순위가 더 중요할 때가 많습니다.

  • 같은 지역 안에서 상품별 매출 순위
  • 같은 부서 안에서 직원별 실적 순위
  • 같은 브랜드 안에서 옵션별 판매 순위

즉, 두 개 열이 동시에 기준이 될 때는 COUNTIFS로 조건을 묶어서 계산하는 방식이 가장 직관적입니다.

실무 예제로 이해하기

지역 상품 매출 예상 순위
East A 950 1
East A 700 2
East A 500 3
East B 850 1
East B 600 2
West A 900 1
West A 400 2

위 예제에서 East + A 그룹 안에서는 950, 700, 500 순으로 1위, 2위, 3위가 됩니다. 반면 East + B는 별도의 그룹이므로 850가 1위, 600이 2위가 됩니다.

수식 해석

=COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2,$C$2:$C$100,">"&C2)+1
  1. $A$2:$A$100, A2 : 현재 행과 같은 지역만 셉니다.
  2. $B$2:$B$100, B2 : 현재 행과 같은 상품만 셉니다.
  3. $C$2:$C$100, “>”&C2 : 현재 매출보다 큰 값만 셉니다.
  4. 마지막에 +1 : 큰 값이 0개면 1위, 1개면 2위가 됩니다.

동점이 있을 때는?

COUNTIFS 방식은 기본적으로 동점이면 같은 순위를 반환합니다.

예를 들어 같은 그룹 안에 700이 두 개라면 두 행 모두 같은 순위가 됩니다. 이 방식은 매출, 점수, 실적처럼 동률을 허용하는 데이터에 적합합니다.

동점을 강제로 나누고 싶다면

동점을 순서대로 1, 2, 3처럼 나누려면 보조 기준이 하나 더 필요합니다. 예를 들어 등록일, 행번호, 입력순서 같은 열을 추가해서 두 번째 정렬 기준으로 사용하면 됩니다.

자주 하는 실수

증상 원인 해결 방법
순위가 전부 1로 나옴 비교 범위와 조건 값이 잘못 연결됨 각 범위 길이와 참조 셀이 같은지 확인
순위가 엉뚱하게 나옴 숫자가 텍스트로 저장됨 C열을 숫자 형식으로 변환
복사했을 때 결과가 깨짐 절대참조가 빠짐 범위는 $ 기호로 고정
동점이 구분되지 않음 현재 수식은 공동 순위 방식 보조열을 추가해 tie-break 기준 생성

이런 상황에서 특히 유용합니다

  • 지점별 상품 판매 순위를 보고 싶을 때
  • 부서별 직원 실적 순위를 자동 계산할 때
  • 카테고리별 점수 상위 항목을 찾을 때
  • 피벗테이블 없이 원본 데이터에서 바로 순위를 만들고 싶을 때

마무리

COUNTIFS 함수로 2열 조건별 순위를 구하는 핵심은 간단합니다. 같은 A열, 같은 B열, 더 큰 C열 값의 개수 + 1 구조만 이해하면 대부분의 그룹 순위 문제를 해결할 수 있습니다.

실무에서는 전체 순위보다 조건별 순위를 구해야 하는 경우가 훨씬 많습니다. 따라서 이 수식 하나만 익혀도 판매 데이터, 인사 데이터, 재고 데이터 정리에 바로 활용할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *