오늘 끝나면
조건과 반복
- ✓조건과 반복의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 조건과이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
If·For·Do While — 판단하고 반복 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
엑셀 VBA · 05
조건과
반복
If로 판단하고 For로 반복한다.
행을 훑으며 조건을 처리하면 1000행도 한 번에 끝난다.
If…Then…Else로 판단한다
If는 조건에 따라 둘 중 하나를 고르는 갈림길이다.
모양은 단순하다. If 조건 Then 다음에 참이면 할 일을 적고 End If로 닫는다.
엇갈린 경우까지 처리하려면 사이에 Else를 끼운다.
조건은 비교다. >=, <=, =, <>(다름)로 두 값을 견준다.
여러 조건은 And, Or로 묶는다.
결과는 참(True) 아니면 거짓(False), 딱 둘뿐이다.
If 점수 >= 60 Then
결과 = "합격"
Else
결과 = "불합격"
End If결과는 둘 중 하나로만 갈린다
For·Do While로 반복한다
같은 판단을 행이 1000개라고 1000번 적을 순 없다. 그래서 반복문을 쓴다.
횟수를 알 땐 For다. For i = 1 To 10부터 Next i까지 적으면 i가 1, 2, 3에서 10까지 자동으로 올라간다.
Step 2를 붙이면 2칸씩 오르고, Step -1이면 거꾸로 센다.
몇 번일지 모르고 “~인 동안” 돌릴 땐 Do While 조건 부터 Loop까지를 쓴다.
데이터 끝까지, 그러니까 빈 칸이 나올 때까지 훑는 데 자주 쓴다.
둘 다 같은 코드 한 덩이를 컴퓨터가 여러 번 반복해 실행한다.
For i = 1 To 5
' i = 1,2,3,4,5
Next iDo While Cells(i,1) <> ""
i = i + 1 ' 빈 칸 전까지
Loop몇 번일지 모를 때, 데이터 끝까지
행을 훑으며 조건을 처리한다
실무 자동화의 90%가 이 한 패턴이다. 반복으로 행을 훑고, 그 안에서 If로 골라낸다.
For i = 1 To 8이 행을 한 칸씩 내려가고, 각 행에서 If Cells(i,1) >= 기준이 참인 셀만 칠한다.
연산자와 기준값을 바꾸면 같은 루프가 다른 행을 골라낸다.
이게 합격자 표시, 미입력 찾기, 금액 합산 같은 일을 만드는 뼈대다.
For i = 1 To 8
If Cells(i,1) >= 70 Then 표시
End If
Next iFor 루프가 1행부터 한 칸씩 내려가며 모든 행을 자동으로 훑는다. 손으로 8번 볼 일을 코드가 한 번에 처리한다.
조건과 반복은 자동화의 핵심 도구
눈으로 보고 칠해도 되는데 코드로 적는 이유는 규모와 반복이다.
8행이면 손이 빠르다. 하지만 8000행이거나 매주 새 시트가 들어온다면 다르다.
For와 If를 한 번 적어두면, 행이 몇 개든 매크로 버튼 한 번에 끝난다.
반복은 지치지도 빠뜨리지도 않는다. 조건은 틀린 기준 없이 똑같이 판단한다.
앞 강의에서 배운 Dim(변수)과 Cells(셀 제어)에 이 둘을 얹으면, 비로소 “사람이 하던 반복 작업”을 코드가 대신한다.
8000행이면 불가능
8000행도 버튼 한 번
한 줄로 정리
오늘 둘만 챙기면 된다. If는 판단, For와 Do While은 반복이다.
판단이 필요하면 If…Then…Else…End If를 쓴다.
횟수를 알면 For…Next, 모르면 Do While…Loop다.
그리고 둘을 겹친 행을 훑으며 골라내는 패턴이 실무 자동화의 기본 뼈대다.
Q. 1000개 행을 똑같은 규칙으로 처리해야 한다. 무엇을 쓰나? (① 행마다 코드 1000줄 ② 반복문 한 번 ③ Else만으로 ④ 손으로 클릭)
정답은 ② 반복문 한 번이다.For i = 1 To 1000 안에 If 판단을 한 덩이 적으면, 행이 몇 개든 같은 코드가 자동으로 1000번 굴러간다.
코드를 1000줄 베껴 쓰거나 손으로 클릭하는 건 반복문이 막아주는 바로 그 노동이다.
| 키워드 | 하는 일 |
|---|---|
| If…Then…Else | 판단참/거짓으로 갈림 |
| For…Next | 반복(횟수 앎)i를 1→N 자동 |
| Do While…Loop | 반복(조건)~인 동안 계속 |
| For + If | 행 훑어 처리반복 속 판단 |