l3khub.com

단순 반복작업 자동화: 엑셀 매크로 활용 방법과 팁 #3/8 (기초 프로그래밍 문법 - 반복문, for/while)

이전 편에서는 매크로 프로그래밍에 필수적인 변수, 연산자 우선순위, 그리고 함수에 대해 설명했습니다. 이번 편에서는 매크로 작성을 위해 필요한 기본 프로그래밍 문법 중 반복문인 For문, While문 등에 대해 자세히 설명하겠습니다.


엑셀-매크로-프로그래밍-기초-프로그래밍-문법-썸네일


단순 반복작업 자동화: 엑셀 매크로 활용 방법과 팁 #3/8 (기초 프로그래밍 문법 - 반복문, for/while)




이번 편에서는 엑셀 매크로 프로그래밍에서 반복문으로 가장 많이 사용되는 For, While에 대해서 문법 및 예제 코드를 통해 상세히 설명하도록 하겠습니다.


목차
1. 반복문이란
2. For와 while


반복문


반복문은 이전 편에서 설명하였던 함수와 함께 이해하는 것이 더욱 효과적입니다.
우리가 많이 봐왔던 1부터 100까지 더하려면 어떻게 해야 할까요? 여러가지 해결 방법이 있겠지만 대표적으로 아래 몇가지의 방법이 있을 것입니다.

① 단순 무식하게 1부터 100까지 다 더한다. 그러니까 1+2+3+4….+100 이런 식으로
② n * (n+1)/2 공식을 사용한다. 즉, 100 + (100+1)/2 = 5050
③ 반복문과 함수를 이용한다.

②번의 방법으로 해결하는 것이 가장 이상적이겠지만 이런 공식을 알고 활용하기에는 개인별로 차이가 있기 때문에 여기서는 세가지 모두 소스 코드를 만들어 설명 드리도록 하겠습니다.

① 단순 무식하게 1부터 100까지 다 더한다.

1부터-100까지-하나하나-더하는-소스

위의 소스를 실행한 결과는 다음과 같습니다. 여러줄로 나누어 작성하였으나 1+2+3+4….+100까지 너무 길어서 10개씩 나눠서 계산했을 뿐 한 줄로 쓰는 것과 같습니다.

1부터-100까지-하나하나-더하는-소스코드-실행-결과

한 눈에 봐도 이 방법은 아니라는 생각이 들 것입니다. 1부터 100이니까 위와 같은 코드로 작성하는 것이 가능했지만 만약 1부터 10000까지 더해야 할 경우가 있다면 이 방법을 사용하는 사람은 거의 없을 것입니다. 만약 있다면 뭐 할 말은 없습니다.

② n * (n+1)/2 공식을 사용한다

1부터100까지-더하기-공식을-활용한-소스코드

실행 결과는 아래와 같습니다.

1부터-100까지-더하기-공식을-활용한-소스코드-실행결과

앞에서도 언급했듯이 너무 깔끔하고 보기 좋다고 느끼실 겁니다. 모든 것에 공식을 적용하기는 어렵겠지만 평소에 공식을 만들어서 적용하는 습관을 들이면 좋을 것 같습니다.

③ 반복문과 함수를 이용한다

반복문에서는 for 와 while 문을 많이 사용합니다.


a. for문 사용

1부터100까지-for문을-사용해서-더하는-소스코드

b. While문 사용

1부터100까지-while문을-사용하여-더하는-소스코드

For와 while문의 실행 결과는 아래와 같습니다.

1부터100까지-for와while문을-사용한-소스코드-실행결과




For 와 While


for와 while은 쓰이는 형식이 있기 때문에 귀찮더라도 몇 가지는 외워야 합니다.

a. For ~ Next

For 변수 = 시작값 to 최종값 step 증가값 (증가값이 1이라면 step문은 생략 가능합니다.)
실행문
Next

이를 해석하면 시작값부터 최종값까지 증가값만큼 순차적으로 증가 또는 감소하면서 For ~ Next 사이에 있는 코드를 반복 실행한다 입니다.

위에서 작성했던 For문사용해서더하기 프로시저를 예를 들어 설명하면, 시작값이 1, 최종값이 100이고 증가값은 생략되어 있기 때문에 1이 됩니다.
즉, 1부터 100까지 1씩 순차적으로 증가하면서 그 값이 i에 대입되고, isum 에 i를 계속 더해서 값이 계속 싸이게 됩니다. 결과적으로는 1부터 100까지 더하게 되는 것입니다.
②보다는 다소 복잡하지만 ①보다는 훨씬 효율적으로 처리할 수 있습니다.

b. Do While 문

Do While 조건
조건이 참일 때 실행문
Loop

이를 해석하면 조건이 맞으면 실행문을 실행하고 조건이 틀리면 Do While문을 벗어나게 됩니다.

Do while문은 For와 같은 반복문이지만 사용법은 조금 다릅니다. 가장 큰 차이점은 for는 최종값을 알고 있을 경우 사용하기 좋고, Do while 은 최종값을 알지 못하고 사용자가 원하는 조건이 참일 경우만 실행할 때 사용하기 좋습니다.
그래서 For는 시작부터 최종값을 정해서 시작을 하고 Do while은 시작 시 조건이 참인지만 체크하고 Do while ~ Loop 사이에 변수의 값을 변경시키면서 조건에 맞는지 확인합니다.
위에서 작성했던 While문사용해서더하기 프로시저 코드에는 For문과 달리 i = i+1 이 있는데 이 구문이 없으면 Do while ( i <= 100 ) 에서 i는 앞줄에서 정의한데로 1이기 때문에 조건이 항상 참이 되며 무한루프를 돌게 됩니다. (무한루프는 말 그대로 프로그램에서 빠져나오지 못하고 강제종료하지 않는 한 영원히 프로그램이 실행되는 것을 말합니다.)

For와 Do While문은 지금까지의 설명으로도 충분히 이해할 수 있을 것으로 생각하고 다시 함수를 왜 사용해야 하는 지로 돌아가 보겠습니다.
위에서 1부터 100까지 더하는 코드를 여러가지 방법으로 작성해 보았습니다. 그런데 만약 1부터100까지, 1부터 1000까지, 1부터 10000까지 3번을 더해야 하는 프로그램을 만들어야 한다고 생각해 보겠습니다. 대략 아래와 같은 코드로 만들 수 있을 것입니다.

1부터100,1부터1000,1부터10000까지-더하는-소스코드

실행 결과는 아래와 같습니다.

1부터100,1부터1000,1부터10000까지-더하는-소스코드-실행결과

그런데 여기에 1부터 500, 1부터 2000, 1부터 5000 을 추가하고 싶다면 어떻게 해야 할까요? For문을 또 사용한다면 동일한 기능을 하는 코드가 반복되기 때문에 상당히 비효율적이 됩니다. 이럴 경우 유용한 것이 바로 함수를 함께 사용하는 것입니다. 아래 코드를 보겠습니다.

함수를-활용한-1부터100,1000,10000까지-더하는-소스코드

앞에서 For문을 여러 번 사용했던 것과는 달리 여기서는 값더하기 함수에 시작과 끝 값만 전달해 주면 합계를 계산한 후 반환하도록 하여 코드를 단순하게 구성할 수 있습니다.
이처럼 함수를 잘 활용하면 소스를 단순하게 만들 수 있기 때문에 평소에도 함수를 활용하는 습관을 들이면 좋겠습니다.

지금까지 반복문이란 무엇인지와 반복문에서 가장 많이 사용되고 있는 For와 While에 대해서 상세하게 알아보았습니다. 이해하기 쉽도록 설명하였으니 한두번 읽어보시면 충분히 사용하실 수 있을 것입니다.




To Top