[엑셀]
반복문 사용하기 (For ~ Next문)
오늘은
11월5일(토)에 진행하는 장미희님의 Excel 매크로 & VBA 과정 중
반복문 중의 하나인 For..Next문에 대해서 알아보도록 하겠습니다.
(사용버전: 엑셀 2003)
제어문에서 자주 사용되는 구문이 If...Then...Else 문인 것처럼 반복문에서도 주로 사용하는 구조가 있는데
바로 For...Next 문입니다. For...Next 문을 사용하면 한
블럭의 명령문을 지정된 횟수만큼 반복 실행할 수 있습니다. 몇 번 반복 수행해야 한다는 것이 계산으로 명확하게
계산되는 경우에 주로 사용합니다. For...Next 문은 한번 반복될 때마다 증가하거나 감소하는 반복횟수를
계산하는 변수를 사용합니다.
[For...Next 문의 형식]
For 계산횟수 변수 =시작값 To 종료값 [Step
증가값]
[명령문]
[Exit For]
[명령문]
Next [계산횟수변수] |
1. 초기값과 종료값만 있는 예제
증가값은 지정되지 않으면 기본값이 1입니다. 셀에 데이터를 입력하는 예제로 1열(A열)에는 1에서 10까지,
2열(B열)에는 11에서 20가지, 3열(C열)에는 21에서 30까지를 입력하고 그 과정에서 모든 데이터의 합계를
계산합니다.
Cells 속성은 Cells(행, 열)의 형식을 갖는데 예제 프로시저에서 Cells(K,1)은
Cells(1,1)에서 Cells(10,1)까지로 결국 A1 셀에서 A10 셀까지를 의미하고, Cells(K,2)는
당연히 B열을 의미합니다.
For...Next문 예제를 실행하면 A, B, C 열에 데이터가
입력되고 합계인 465를 표시하는 메시지 상자가 표시됩니다.
2. 증가값이 2인 예제
다음 예제에서 루프가 반복될 때마다 계산횟수 변수 K가 2 단위로 증가합니다. 루프 동작이 종료되면 1, 3, 5,
7, 9 행에 데이터가 입력되고 1, 3, 5, 7, 9 행의 합계가 계산됩니다.
프로시저를 실행하면 A, B, C열의 1, 3, 5, 7, 9행에만 데이터가 입력되고 데이터도 홀수만 입력이 되어
표시됩니다. 프로시저를 실행하면 1에서 30까지의 홀수들의 합계인 225를
표시하는 메시지 상자가 표시됩니다.
3. 증감값이 음수
For...Next문에서 초기값이 종료값보다 작은 형식이 일반적으로 사용되는데 초기값이 종료값보다 큰 경우가
있습니다. 이 때는 반드시 증가값이 음수가 되어야 합니다. 증가값이 양수로 지정되면 루프가 아예 실행되지 않습니다.
다음은 증가값이 음수인 경우입니다. 계산횟수 변수를 감소시키려면 증가값에 음수를 사용하는데 종료값이 시작값보다 작게
지정되어야 한다는 점에 주의합니다.
증가값이 감소하는 경우의 프로시저를 실행하면 K값이 10, 8, 6, 4,
2의 순서로 진행되는 것을 확인할 수 있고, 데이터가 입력되는 셀의 주소도 10, 8, 6, 4, 2행에 짝수가
입력됩니다. 프로시저를 실행하면 합계는 240이 메시지 상자에 표시됩니다.
4. 중첩 For...Next 문
For...Next문은 여러 개 중복해서 사용할 수 있습니다. 이런 형식을 내포 또는 중첩이라고 표현합니다. 다음
예제는 바로 For...Next문이 2개 사용되는 경우입니다.
For...Next 문에서 Next 키워드는 For 키워드와 짝을 이루어야 하는데 나중에 선언된 For 키워드에
Next 키워드가 먼저 짝을 이루는데 Next 뒤의 변수명은 생략해도 됩니다.
2개의 For...Next문을 사용하여서 작성한 프로시저를 실행하면 30에서
1까지 데이터가 A1 셀에서 C10 셀까지 입력되고 데이터의 합계인 465가 메시지 상자에 표시됩니다.
5. Exit For 문을 사용하여 루프 빠져나가기
Do...Loop문을 학습할 때 반복문에서는 루프가 반복되는 중간에 반복상태를 벗어나는 경우가 있다고 했습니다.
For...Next 문에서도 Exit For 문을 사용하여 루프를 빠져나갈 수 있는데 Exit For 문을 사용하면
계산횟수 값이 종료값에 도달하기 전에 For...Next 문을 빠져 나갈 수 있습니다. 일반적으로 오류가 발생할
때와 같은 특수한 상황에서만 빠져나가므로 If...Then...Else 문이나 Select Case 문의 True
문 블럭에 Exit For 문을 사용해야 합니다. 조건이 False이면 루프는 계속 실행됩니다.
여러 개의 For...Next문을 사용하면 Exit For 문도 작성하려는 프로시저의 의도에 따라서 여러 번 사용할
수도 있습니다.
Exit For문을 사용하여서 루프를 벗어나는 프로시저를 실행하면 실행결과가
C10 셀에서 데이터가 입력되기 시작하여서 B7까지 1에서 14까지의 데이터가 표시되고 1에서 14까지의 합계인
105가 메시지 상자에 표시됩니다.