Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Excel & VBA---Brain Training




하나의 물건을 구상하고 디자인하고 이것은 사람이 할 일이다
앞페이지에서 하나의 셀에 이런 일..저런일을 구상하고 설계하고
만들었다
이것은 인간이 생각하고 할일이다
이제 이것을 대량생산체제로 들어가야 한다
주문량에 맞게..
100개를 주문하던..
1000개를 주문하던..
세팅된 기계위에 올려 놓으면 되는 것이다

에플 아이폰이 마구마구 팔린다
에플 아이폰을 하나를 만들기 위하여 창의적인 사람들이 밤낮을 가리지
않고 생각하고 연구하고 이렇게 해보고..저렇게 해보고 했을 것이다
하나를 완성했다..테스트해본다..OK!!!!
그럼 광고때리고 대량생산으로 가는 것이다
이제 기계가 돌아가는 것이다..
그냥 놓아두어도 돌아가는 생산체제가 된다

컴퓨터 프로그래밍은 제어와 연속반복작업이다
제어는 조건문이고 연속작업은 순환이고..

또한 어려워 하는 것은 순환문속에서 제어문(조건문이 들어가고)조건문속에서
또 순환문이 돌아가는 그런 것에 능숙하지 못할뿐이다

VBA에 능숙하게 된다고 하는 것은 이렇게 중첩되는 구조들이
한눈에 들어올수 있는 습관을 키우는 것이다

하나의 모델..표준화를 한후 순환을 하면 된다
대개의 프로그램을 해 달라고 할때 하나의 기본모델을 세울때 애를 먹는다
이 부분에서 생각이 확실해야 다음 대량생산이 들어가는 것이다

셀하나에다 어떤 작업을 하는 내용을 표준화한것이다
이것을
셀몇개에 할것인지????
변수가 또 몇개 만들어져야 할것 같지 않은가???
작업을 새로 한다!!라고 생각하면 어떤 정보가 발생할것인지 생각을 먼저 하는
습관이 좋다
이런 것이 실생활에서는 습관화되지 않는다
오직 엑셀프로그래밍을 통하여 습관화된다
변수를 생각한다고 하는 것은 준비를 하는 자세가 갖추어 진다는 소리다
준비를 착실하게 하는 사람에게 당할 수 없다
자..어떤 변수가 필요할까???
셀이 몇개??라는 것을 담기 위한 변수가 필요하지 않겠는가???
주문이 100개도 들어 올때도 있고 10개 들어올때도 있다
그러니 변화하는 값을 어딘가에 담아 두어야 하는 것이다
셀이 몇개...아래와 같이 변수를 하나 만든다

Dim intCellCount As Integer

이것도 몇개가 될지 모르니까..
난수발생 표현식을 사용하자

intCellCount=Int(Rnd()*100)+1

이렇게 하면 Int(Rnd()*100)+1 표현식의 결과값은 1에서 100사이의 값이
intCellCount 변수에 담기게 되겠지

만약 intCellCount 값이 40개라면 처음에 하나의 셀에 적용하였던 작업을
40번 하면 된다
그런데 매번 할때마다 셀을 이동해야 겠지..
40개의 셀에 하나..하나 순환하면서 값을 만들어서 전달하고 조건식을
돌려서 어떻게 전달할지를 판단해 가야 하는 것이다
하나의 셀에 하는 작업은 똑같다!!
그러나 이 똑같은 짓을 40번 한다

순환구조를 띄워 보자
순환구조를 띄우려면 변수가 하나 더 만들어져야 한다
징그럽다!@#@! 변수를 또 만들다니..
프로그래밍은 변수만드는 것에 재미가 들려야 한다
그러지 않으면 프로그래밍은 전개되지 않는다
40번을 돌면서 매번 몇번째셀인지를 인식할수 있는
변수가 하나 더 있어야 하는 것이다

Dim intNextCell As Integer

라고 지어 놓고 순환구문을 아래와 같이 만든다

For intNextCell=1 To intCellCount
   .....
   .....
   .....[위에서 만든 하나의 셀에 대한 작업을 이곳에서 처리]
   ....
   ....
Next

순환문의 기본형이다
한번 돌때마다 intNextCell은 1씩 증가된 값으로 바뀐다
그렇다면 1이되고,2가 되고,3이 되고,4가 되고 5가 ......될때
이 변하는 값을 활용하여 첫번째셀,두번째셀,세번째셀에 접근하는 방법을
알면 되는 것이다
intNextCell변수값을 활용하여 어떤 작업을 한다
intNextCell변수값이 하나의 콘트롤역할을 하는 셈이다
이렇게 변하는 값이 변수라는 방에 보관되고 우리는 intNextCell이라는 이름의
방을 찾게되고 이곳의 값을 활용하게 되는 것이다

아래와 같은 구문을 실행 시켜보시기 바란다

Dim intNextCell As Integer
Dim intCellCount As Integer
intCellCount = Int(Rnd() * 100) + 1
For intNextCell = 1 To intCellCount
   Range("C3").Cells(intNextCell) = Int(Rnd() * 10) + 1
Next

현재 활성화되어 있는 시트에 어떻게 값이 떨어지는지 볼 수 있었을 것이다
이번에는 범위의 접근을 이렇게 해 보시라

   Range("C3").Cells(1,intNextCell) = Int(Rnd() * 10) + 1

Range("C3")를 기준으로 열방향 행방향으로
방향이동이 콘트롤됨을 알수 있을 것이다
숫자 하나에 따라서 결과가 틀려지는 세상 재미있지 않을가??
범위에 접근하는 요령중의 하나인것이다
이렇게 자유자재로 원하는 범위에 접근하여 해당 범위의 어떤 속성에
어떤 값을 줄것인가??를 생각하고 프로그래밍하는 것이 엑셀프로그래밍이다
3개월간의 영업 정보가 있다
이것을 직원별로 평균매출을 분석하여 보고서를 작성하라!!
라는 것도 역시 위와 같은 요령인것이다
정보를 읽어서 원하는 방법대로(Bisiness Logic)계산하여 원하는 위치(보고서)에
뿌려주는 것이다..
이런 일은 일하는 현장에는 수도 없이 널려있다
매 3개월이 될때마다 프로그래밍해 놓은 모듈을 실행만 시키면 된다
매 3개월마다 징징..툴툴 대면서 작업을 할 일이 아니지 않은가??!!

아래의 두개의 버튼을 크릭해 보면서
Cells(intNextCol) 로 접근할때는 어떻게 나타나고
Cells(1,intNextCol)로 접근할때는 어떻게 표현되는지 관찰하시기 바란다
열과 행은 엑셀에서 자유롭게 이해하고 활용하여야 하는 가장 중요한 컨셉이다





열방향으로 셀을 찾아다니면서 같은 짓을 반복하고
행방향으로 셀을 찾아다니면서 같은 짓을 반복한다

엑셀시트에서 반복하여 크릭한다면 어떻게 될까??
이전에 만들어진 정보위에 다시 뿌려지면..안될것이다
그렇다면 지우는 작업도 해야 겠네????그렇지..
엑셀프로그래밍은 그냥 일만 한다고 되는 것이 아니다..
일을 하기 전에는 반드시 어떤 정리정돈작업을 염두에 두어어야 한다
그래서 엑셀프로그래밍을 하면 사람이 확실해 진다
그냥 일만 벌리고 다니는 것이 아니고 한 일에 대하여 다시 정리하고 정돈하고
새로운 작업을 위하여서는 사전에 항상 이런일을 하여야 하고..


BrainTraining_065_2.



그렇다면 열방향도 찾아다니고 행방향도 같이 찾아다니면서 한다면
행열...MATRIX...이 완성되겠네??!!!!
사람이라면 그런 생각이 자동을 떠오른다
동시에 하면 되잖아!!!
그렇지!!!
그럼 순환을 하면서 또 그 안에서 순환을 또 시키면 되나??!!
그렇지!!!
그러니까 그것을 중첩된 순환문이라고 부른다(Nested Loop Structure)

그것을 다음페이지에서 하도록 하자