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에 기준을 한 줄로 박아 두세요.