Excel에서 그룹별로 값을 순위 매기는 방법은 무엇입니까?
Excel에서 그룹화된 데이터를 작업할 때는 종종 각 그룹 내의 값을 비교해야 합니다. 예를 들어 지역별로 판매 실적을 순위 매기거나, 반별로 시험 점수를 정리하거나, 카테고리별로 거래 금액을 분류하는 경우가 있습니다. Excel은 데이터 순위 매기기에 강력한 도구를 제공하지만, 그룹 내 순위 매기기(일명 '그룹별 순위' 또는 '조건부 순위')는 특정 접근 방식이 필요합니다. 이 방법은 특히 여러 범주 간에 결과를 혼합하지 않고 성과를 평가하거나 상위 및 하위 기록을 식별해야 할 때 유용합니다. 다음 방법들은 그룹별로 값을 순위 매기는 실용적인 솔루션을 탐색하여 일상적인 작업에서 데이터를 정확히 해석하고 분석하기 쉽게 만듭니다.
그룹별로 값을 순위 매기기
VBA 코드 - 매크로를 사용하여 각 그룹 내 값을 자동으로 순위 매기기
그룹별로 값을 순위 매기기
학생들의 점수를 반별로 매기거나 다른 지역별로 판매량을 나열해야 하는 등 독립된 그룹 내에서 값을 순위 매겨야 하는 상황에서는 Excel에 직접적인 "그룹별 순위" 기능이 없습니다. 그러나 잘 설계된 수식을 통해 효율적으로 그룹별 순위를 매길 수 있으며 추가적인 데이터 조작 없이도 이를 수행할 수 있습니다.
이를 위해 논리 테스트와 집계 함수를 결합한 배열 수식을 사용할 수 있습니다. 이 접근 방식을 통해 각 값은 지정된 그룹 내에서만 비교되며, 필요한 각 데이터 포인트에 대한 순위가 생성됩니다.
다음 단계를 따르세요:
- 그룹 (A2:A11)과 값 (B2:B11)과 같은 열에 그룹화된 데이터를 준비하세요.
- 데이터 옆에 있는 빈 셀을 선택하세요—보통 값 바로 옆의 첫 번째 행입니다. 예를 들어 C2셀을 선택하세요.
- 다음 수식을 입력하세요:
=SUMPRODUCT(($A$2:$A$11=A2)*(B2<$B$2:$B$11))+1
이 수식은 동일한 그룹 내에서 현재 값보다 작은 값을 세는 방식으로 작동합니다. 각 매개변수가 의미하는 바는 다음과 같습니다:
- ($A$2:$A$11=A2)
→ 이는 A2:A11 범위의 각 셀이 A2의 값과 같은지 확인합니다.
→ 해당 행이 A2와 동일한 그룹에 속하는지 여부를 나타내는 TRUE/FALSE (또는 1/0) 값의 배열을 반환합니다. - (B2<$B$2:$B$11)
→ 이는 B2:B11에서 B2보다 큰 값의 수를 확인합니다.
→ B2가 주어진 값보다 작으면 TRUE (1), 그렇지 않으면 FALSE (0)을 반환합니다. - * (곱셈)
→ 이 두 조건을 결합합니다: - 그룹 일치 (A2)
B2의 값이 다른 값보다 작음
→ 따라서 동일한 그룹에 속하며 더 작은 값을 가진 행만 계산됩니다. - SUMPRODUCT(...)
→ 두 조건을 모두 충족하는 행의 수를 합산합니다. - +1
→ 순위는 0이 아닌 1부터 시작하므로, 더 작은 값의 수에 1을 더합니다.
C2에 수식을 입력한 후, 모든 관련 행에 대해 수식을 적용하도록 자동채우기 핸들을 아래로 드래그하세요. 수식은 각 행의 그룹과 값을 자동으로 조정하여 그룹 내 순위를 반환합니다.
팁 및 주의사항:
- 범위가 큰 경우 셀 참조를 적절히 업데이트해야 합니다.
- 내림차순으로 순위를 매기려면 (예: 가장 큰 값이 1), 수식 비교를
B2<$B$2:$B$11
에서B2>$B$2:$B$11
로 수정하세요. - 중복 값 처리를 위해 이 수식은 동일한 그룹 내 동일한 값을 동일한 순위로 지정합니다. 연속적인 고유 순위가 필요한 경우 추가 보조 열을 사용하는 것을 고려해보세요.
이 수식 기반 방법은 유연하며 대부분의 그룹화된 표 구조에 쉽게 적용할 수 있습니다. 그러나 매우 큰 데이터셋의 경우 배열 논리에 의존하기 때문에 계산 성능이 저하될 수 있습니다.
VBA 코드 - 매크로를 사용하여 각 그룹 내 값을 자동으로 순위 매기기
자동화된 순위 프로세스를 원하거나 대규모 데이터를 더 효율적으로 처리하려는 사용자의 경우 VBA 매크로 작성은 가치 있는 접근법이 될 수 있습니다. 매크로는 복잡한 수식에 비해 반복적인 단계를 자동화하고, 더 많은 맞춤 설정을 제공하며, 데이터를 신속하게 처리할 수 있습니다. 이는 예약된 보고서 생성, 반복적인 순위 작업, 또는 워크시트에서 수식 혼란을 피하고자 할 때 이상적입니다.
진행하기 전에 작업을 저장하고 Excel 설정에서 매크로를 활성화했는지 확인하세요. 스크립트 및 실행 방법은 다음과 같습니다:
- Alt + F11 키를 눌러 VBA 편집기를 활성화하세요. 나타나는 Microsoft Visual Basic for Applications 창에서 Insert > Module을 클릭한 후, 열린 모듈에 다음 코드를 붙여넣으세요:
Sub RankValuesByGroup()
Dim DataRange As Range
Dim GroupRng As Range
Dim ValueRng As Range
Dim OutCol As Range
Dim dictGroups As Object
Dim arrValues, arrRanks
Dim i As Long, j As Long
Dim GroupKey As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set DataRange = Application.InputBox("Select the data table range (including group and value columns)", xTitleId, Selection.Address, Type:=8)
If DataRange Is Nothing Then Exit Sub
Set GroupRng = Application.InputBox("Select the group column within your range", xTitleId, DataRange.Columns(1).Address, Type:=8)
Set ValueRng = Application.InputBox("Select the value column to rank within your range", xTitleId, DataRange.Columns(2).Address, Type:=8)
Set OutCol = DataRange.Offset(0, DataRange.Columns.Count).Resize(DataRange.Rows.Count, 1)
OutCol.Cells(1).Value = "RankByGroup"
Set dictGroups = CreateObject("Scripting.Dictionary")
arrValues = ValueRng.Value
arrRanks = ValueRng.Value
' Build group dictionaries for ranking
For i = 2 To UBound(arrValues, 1)
GroupKey = GroupRng.Cells(i, 1).Value
If Not dictGroups.Exists(GroupKey) Then
dictGroups.Add GroupKey, CreateObject("System.Collections.ArrayList")
End If
dictGroups(GroupKey).Add arrValues(i, 1)
Next i
' Rank within each group
For i = 2 To UBound(arrValues, 1)
GroupKey = GroupRng.Cells(i, 1).Value
Dim countLower As Long
countLower = 0
For j = 0 To dictGroups(GroupKey).Count - 1
If dictGroups(GroupKey)(j) < arrValues(i, 1) Then
countLower = countLower + 1
End If
Next j
arrRanks(i, 1) = countLower + 1
Next i
' Output results
For i = 2 To UBound(arrRanks, 1)
OutCol.Cells(i, 1).Value = arrRanks(i, 1)
Next i
MsgBox "Ranking by group completed.", vbInformation, xTitleId
End Sub
- Run을 클릭하세요. 대화 상자가 나타나 전체 데이터 범위, 그룹 열 및 값 열을 선택하라는 메시지를 표시합니다. 그런 다음 매크로는 각 그룹 내 값에 대한 순위를 포함한 새 열을 생성합니다.
참고 및 문제 해결:
- 데이터와 일치하도록 열 선택이 올바른지 확인하세요: 그룹 열과 값 열이 정확히 맞아야 합니다.
- 데이터 헤더가 포함된 경우, 올바른 순위를 위해 코드에서 초기 루프 인덱스를 데이터 구조에 따라 조정하세요.
- 내림차순으로 순위를 매기려면
If dictGroups(GroupKey)(j) < arrValues(i,1)
비교를 그에 따라 수정하세요. - 권한 또는 매크로 보안 경고가 발생하면 File > Options > Trust Center에서 Excel의 매크로 보안 설정을 확인하세요.
이 VBA 방법은 특히 자동화된 보고서 워크플로와 통합될 때 더욱 발전된 또는 확장된 응용 프로그램에 유연하고 견고한 성능을 제공합니다.

Kutools AI로 엑셀의 마법을 풀다
- 스마트 실행: 셀 작업 수행, 데이터 분석 및 차트 생성 - 간단한 명령어로 모든 것을 처리합니다.
- 사용자 정의 수식: 작업을 간소화하기 위한 맞춤형 수식을 생성합니다.
- VBA 코딩: 손쉽게 VBA 코드를 작성하고 실행합니다.
- 수식 해석: 복잡한 수식도 쉽게 이해할 수 있습니다.
- 텍스트 번역: 스프레드시트 내 언어 장벽을 허물어 보세요.
최고의 오피스 생산성 도구
🤖 | Kutools AI Aide: 지능형 실행을 기반으로 데이터 분석 혁신 지능형 실행 | 코드 생성 | 사용자 정의 수식 생성 | 데이터 분석 및 차트 생성 | Kutools Functions 호출… |
인기 기능: 중복 찾기, 강조 또는 중복 표시 | 빈 행 삭제 | 데이터 손실 없이 열 또는 셀 병합 | 반올림... | |
슈퍼 LOOKUP: 다중 조건 VLookup | 다중 값 VLookup | 다중 시트 조회 | 퍼지 매치 .... | |
고급 드롭다운 목록: 드롭다운 목록 신속 생성 | 의존형 드롭다운 목록 | 다중 선택 드롭다운 목록.... | |
열 매니저: 지정 개수 열 추가 | 열 이동 | 숨겨진 열 표시 상태 전환 | 범위 및 열 비교 ... | |
주요 기능: 그리드 포커스 | 디자인 보기 | 향상된 수식 표시줄 | 통합 문서 & 시트 관리 | 자동 텍스트 라이브러리 | 날짜 선택기 | 데이터 병합 | 셀 암호화/해독 | 목록별 이메일 보내기 | 슈퍼 필터 | 특수 필터 (굵게/이탤릭/취소선 필터...)... | |
Top15 도구 세트: 12개 텍스트 도구(텍스트 추가, 특정 문자 삭제, ...) | 50+ 차트 유형(간트 차트, ...) | 40+ 실용 수식(생일을 기반으로 나이 계산, ...) | 19개 삽입 도구(QR 코드 삽입, 경로에서 그림 삽입, ...) | 12개 변환 도구(단어로 변환하기, 통화 변환, ...) | 7개 병합 & 분할 도구(고급 행 병합, 셀 분할, ...) | ... 그리고 그 외 |
Kutools for Excel로 Excel 실력을 한 단계 업그레이드하고, 그 어떤 때보다 뛰어난 효율성을 경험하세요. Kutools for Excel은300개 이상의 고급 기능을 제공하여 생산성을 높이고 저장 시간을 줄여줍니다. 가장 필요한 기능을 지금 바로 확인하세요...
Office Tab이 오피스에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다
- Word, Excel, PowerPoint에서 탭 기반 편집과 읽기를 활성화합니다.
- 여러 문서를 새 창이 아닌 동일한 창의 새 탭에서 열고 생성하세요.
- 생산성이50% 향상되며, 매일 수백 번의 마우스 클릭을 줄일 수 있습니다!