전 국민 코딩 시대 엑셀 VBA 기초 6 - 반복문(For~Next, Do While~Loop)

Описание к видео 전 국민 코딩 시대 엑셀 VBA 기초 6 - 반복문(For~Next, Do While~Loop)

전 국민 코딩 시대 엑셀 VBA 기초 6 - 반복문(For~Next, Do While~Loop)

이번에는 반복문(For~Next, Do While~Loop)으로 Looping 하는 방법에 대해 알아보겠습니다

사실 If 문은 2진 조건 체크에는 적합하지만 Looping에는 적합하지 않습니다.
그런데도 If 문으로 Looping을 하여 본 것은 Looping에 대한 기본 개념을 익히기 위함 이었습니다.

이번 블로그에서는 For~Next와 Do Hwile ~Loop로 Looping을 하는 방법에 대해 알아보도록 하겠습니다.

For~Next

For~Next는 Looping을 위한 반복문에 최적화되어 있기 때문에 가장 많이 사용하는 방식입니다.

1부터 10까지의 함을 구할 때 If 문으로 작성한 코드는 8행으로 작성하였지만

For~Next는 4행으로 IF 문과 같은 결과가 나옵니다.
If 문 사용
For 문 사용
I = 0
K = 0
Loop_Ping:
I = I + 1
K = K + I
If I 작다 100 Then
GoTo Loop_Ping
End If
K = 0
For I = 1 To 10 Step 1
K = K + I
Next I

1. 1형식 단일 For~Next
형식 : For 제어 변수=초기 치 To 최종치 Step 증가치
|
Next 제어 변수

의미 : · For 다음의 제어 변수는 수치형(Integer, Long) 변수를 사용합니다.
· 제어 변수는 초기치부터 최종치까지 Step에서 지정한 증가분의 수만큼 증가합니다.

· Step을 생략 시는 증가분은 1이 됩니다.
. Next 다음의 제어 변수는 For에서 사용한 제어 변수를 사용합니다.
. 1형식 단일 For ~ Next에서 Next의 제어 변수 생략 가능하지만, 좋은 방법이 아니므로 꼭 제어 변수를 사용합니다.

가. 1부터 10까지 합
"For I = 1 To 10 Step 1"에서 제어 변수 I는 1부터 10까지 1씩 증가하면서 변수 K는 변수 I의 값을 누적 합산을 하면서 제어 변수 I의 값과 변수 K의 값을 출력하다가 제어 변수 I의 값이 11이 되면 Next로 빠져나갑니다.

그런데, For를 빠져나온 후 출력한 제어 변수 I의 값이 11이 되는데, 이것은 "For I = 1 to 10 Step 1"에서 I의 값이 11이 되었을 때 For를 빠져나오기 때문이라는 점 꼭 기억하시기 바랍니다.

나. 1부터 10까지 합 시트로 출력
"This_Sheet.Range("A" & I + 1) = I"에서 "For I = 1 To 10 Step 1"에 의해 제어 변수 I의 값은 1부터 10까지 발생됩니다.

만약에 "This_Sheet.Range("A" & I) = I"라고 한다면 I의 값이 1일 때 1행 A, B 열에 값이 적용되어 1행의 타이틀이 지워지게 됩니다.

그래서 "This_Sheet.Range("A" & I + 1)"과 같이 결과를 출력 행값이 2행부터 적용되는 겁니다.

다. Exit For
For~Next Looping 중 특정 조건에 의해 Looping을 종료하려면 Exit For를 사용합니다.

2. 2형식 다중 For 문
For 문을 여러 개 사용하는 것을 다중 For~Next 문이라고 하는데요,
형식
For 제어 변수 1 =초기치 To 최종치 Step 증가치
For 제어 변수 2 =초기치 To 최종치 Step 증가치
|
Next 제어 변수 2
Next 제어 변수 1

설명
· For 다음의 제어 변수는 수치형(Integer, Long) 변수를 사용합니다.
· 제어 변수는 초기치부터 최종치까지 Step에서 지정한 증가분의 수만큼 증가합니다.
· Step을 생략 시는 증가분은 1이 됩니다.
. Next 다음의 제어 변수는 For에서 사용한 제어 변수를 사용합니다.
. For 제어 변수와 Next 제어 변수가 서로 겹치면 안 됩니다.
다중 반복문을 사용 시 For 제어 변수와 Next 제어 변수가 서로 겹치치지 않게 사용합니다.

다중 For~Next 문의 가장 좋은 예제는 구구단일 것입니다.

새로운 변수 M이 등장했는데요, 변수 M에는 초기값을 1을 주고 For 문에서 "M = M + 1"에 의해 최초 2부터 적용하여 지정된 엑셀 시트의
2행부터 출력을 하기 위함입니다.
.
"This_Sheet.Range("A2:C100").Clear"에서 "C100" 까지를 지우라고 했는데,
실제 구구단 결과를 보낼 시트는 73행까지이므로 "C73"으로 작성하면 되겠지만,
이렇게 딱 떨어지는 Row(행)이 있는가 하면 Row(행)의 값이 고정이 아니라 늘었다 줄었다 할 수 있습니다.

그때마다 일일이 Row(행)수를 세어서 지정한다는것은 여간 불편한 일이 아닌데, 이를 해결하는 방법은 다음 블로그에서 다루도록 하겠습니다.

Do While~Loop

Do While~Loop도 Looping을 하는 반복문 이지만, 반복적인 처리를 하는 용도보다는 키값을 체크하는등의 용도로 많이 사용합니다.
형식
Do While 조건
|
Loop
의미
Do While 조건이 성립되는 한 Loop까지 반복 실행 합니다.
1부터10까지의 합을 "Do While ~Loop "으로 하는데, 반복문 Looping은 역시 For~Next가 간단하고 편하죠?

이상 "전 국민 코딩 시대 엑셀 VBA 기초 6 - 반복문(For~Next, Do While~Loop)"에 대해 알아보았습니다.

===============================
참고 : 네이버 블로그 -

전 국민 코딩 시대 엑셀 VBA 기초 6 - 반복문(For~Next, Do While~Loop, Do Until~Loop)
https://blog.naver.com/jxbjultd/22344...

Комментарии

Информация по комментариям в разработке