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
→ 순위는 1부터 시작하므로(0이 아닌), 작은 값의 개수에 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 함수 호출을 기반으로 데이터 분석 혁신… |
인기 기능: 중복 찾기, 강조 또는 식별 | 빈 행 삭제 | 데이터 손실 없이 열 또는 셀 결합 | 수식 없이 반올림 ... | |
슈퍼 LOOKUP: 다중 조건 VLookup | 다중 값 VLookup | 다중 시트 조회 | 퍼지 매치 .... | |
고급 드롭다운 목록: 빠르게 드롭다운 목록 만들기 | 종속 드롭다운 목록 | 다중 선택 드롭다운 목록 .... | |
열 관리자: 특정 개수의 열 추가 | 열 이동 | 숨겨진 열의 가시성 상태 전환 | 범위 및 열 비교 ... | |
주요 기능: 그리드 포커스 | 디자인 보기 | 향상된 수식 표시줄 | 통합 문서 및 시트 관리자 | 자동 텍스트 라이브러리 (Auto Text) | 날짜 선택기 | 데이터 병합 | 셀 암호화/해독 | 목록으로 이메일 보내기 | 슈퍼 필터 | 특수 필터 (굵은 글꼴/이탤릭체/취소선 필터링...) ... | |
최고의 15가지 도구 모음: 12개의 텍스트 도구 (텍스트 추가, 특정 문자 삭제, ...) | 50+ 차트 유형 (간트 차트, ...) | 40+ 실용적인 수식 (생일을 기반으로 나이 계산, ...) | 19개 삽입 도구 (QR 코드 삽입, 경로에서 그림 삽입, ...) | 12개 변환 도구 (단어로 변환하기, 통화 변환, ...) | 7개 병합 및 분할 도구 (고급 행 병합, 셀 분할, ...) | ... 그리고 더 많은 기능들 |
Kutools for Excel로 엑셀 스킬을 강화하고 지금까지 경험하지 못한 효율성을 체험하세요. Kutools for Excel은 생산성을 향상시키고 시간을 절약할 수 있는 300개 이상의 고급 기능을 제공합니다. 가장 필요한 기능을 얻으려면 여기를 클릭하세요...
Office Tab은 탭 인터페이스를 Office에 제공하여 작업을 훨씬 쉽게 만듭니다.
- Word, Excel, PowerPoint에서 탭 편집 및 읽기를 활성화하세요.
- 새 창 대신 동일한 창의 새 탭에서 여러 문서를 열고 생성하세요.
- 생산성을 50% 향상시키고 매일 수백 번의 마우스 클릭을 줄입니다!