VBA Select Case로 깔끔한 다단계 분류 — 5~7단계 등급은 ElseIf 말고 이걸로

성과 점수 열에 =IF를 7번 중첩해 두었다가, 한 구간만 바꿀 때 수식이 무너진 적 있으시죠? 저는 VBA Select Case로 A~D 등급을 한 블록에 모았어요. For 루프 100행 글과 같은 데이터에 가독성 다른 접근입니다.

이 글을 따라 하면 얻는 것
– Select Case · Case Is · Case a To b
– Else·다중 조건
– 중첩 If 대비 유지보수
– 시트 vs VBA 선택 기준

1. 구간 등급 — 기본

점수 열 B2:B101 (100명):

Sub 등급_SelectCase()
    Dim ws As Worksheet, r As Long, 점수 As Double, 등급 As String
    Set ws = ActiveSheet
    For r = 2 To 101
        점수 = ws.Cells(r, 2).Value
        If Not IsNumeric(점수) Then
            ws.Cells(r, 3).Value = "오류"
        Else
            Select Case 점수
                Case Is >= 90: 등급 = "A"
                Case 80 To 89.999: 등급 = "B"
                Case 70 To 79.999: 등급 = "C"
                Case Else: 등급 = "D"
            End Select
            ws.Cells(r, 3).Value = 등급
        End If
    Next r
End Sub

Case Is >= 90 — VBA에서 “이상” 비교. 경계값은 팀 기준을 README에 적어 두세요.

2. 텍스트·다중 Case

Select Case Trim(UCase(ws.Cells(r, 4).Value))
    Case "VIP", "GOLD": 등급 = "A"
    Case "SILVER": 등급 = "B"
    Case "": 등급 = "미입력"
    Case Else: 등급 = "C"
End Select

쉼표로 OR — If Or Or 보다 읽기 쉽습니다.

3. Select Case vs 중첩 If

상황 추천
3~8 구간 Select Case
복잡 AND/OR If + Exit 조합
시트만 IFS 함수

4. 엑셀 IFS와 역할 분담

시트에 =IFS(B2>=90,"A",B2>=80,"B",...)도 가능하지만, 매크로 버튼으로 매달 기준을 바꿀 때는 VBA Select Case가 편해요. 기준표를 기준 시트에 두고:

' 의사코드: Case 점수 >= ws기준.Range("B2")

5. 성능 — 100행 vs 1만 행

100행은 For + Select Case로 충분. 1만 행 이상은 배열에 읽어 한 번에 쓰거나 Power Query 검토. Dictionary 분리 전 등급 열을 채우는 전처리로도 씁니다.

6. FAQ

Q. Case 80 To 89에 89.5는?
포함 — To는 양끝 포함.

Q. 소수 오류?
Round(점수, 2) 후 Select.

Q. 등급별 시트 분리?
등급 열 채운 뒤 Dictionary 시트 분리 호출.

7. 연습

1) 샘플 20행 2) 경계 90/80/70 수정 3) VIP 텍스트 Case 추가 4) For 루프 글과 비교.

다음: Dictionary 값별 시트 분리.

참고: Select Case · SWITCH 함수.

실무 메모 1

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 2

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 3

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 4

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 5

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 6

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 7

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 8

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 9

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 10

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 11

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 12

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 13

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 14

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 15

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 16

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 17

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 18

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 19

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 20

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 21

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 22

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 23

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 24

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 25

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 26

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 27

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 28

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 29

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 30

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 31

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 32

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 33

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 34

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 35

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 36

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 37

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 38

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 39

텍스트는 UCase·Trim 후 Select. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 40

경계값은 팀 README에 명시. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 41

Case Is >= 구간 비교. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 명시적으로 잡으니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

작성자 소개