엑셀자료 사용 안내 엑셀 매크로(VBA)를 이용하여 만든 간단한 프로그램과 엑셀 매크로(VBA)를 배울 수 있는 강좌가 있습니다.
따라서, 대부분 프로그램을 이용하기 위해서는 엑셀 매크로 사용하기 설정을 하여야 합니다. (1.보안설정) 클릭 (2.개발도구설정) 클릭

엑셀의 위대성

엑셀의 위대성에 대해서 간단히 알아보도록 하겠습니다.

회사 내근직을 한다면, 필수 프로그램으로 사용하고 있는 엑셀은 쉽게 접하고 매일 사용하기 때문에 별다른 느낌 없이, 그냥 훌륭한 프로그램이구나 하는 막연한 느낌만 가지고 있습니다.

저 역시, 엑셀이 숫자 계산을 위해서 훌륭한 도구라는 것은 알고 있었지만, 얼마나 위대한 프로그램이었는지는 알 수 없었습니다.

그런데, 제가 근무하는 부서에서 큰 전산개발 프로젝트에 참여하게 되면서, 엑셀이란 프로그램의 우수성에 대해서 알게 됩니다. 제가 참여했던 프로젝트는 개발 기간 1년, 하드웨어 비용을 제외한 순수 외주 인건비만 20억원 상당인 비교적 큰 프로젝트였습니다.

저는 다른 프로그램은 전혀 모르지만 그래도 엑셀 매크로(VBA)를 사용해온 경험이 있었기에, 프로젝트 회의 시간에 요구 사항을 엑셀에서 구현 가능한 기능을 포함하려고 하였지만, 협력 프로그램 개발 업체의 답변은 다음과 같았습니다. "엑셀은 사람이 아닌 신이 만든 프로그램으로, 엑셀에서 되는 기능을 일반 프로그램으로 구현하기는 아주 어렵다."이었습니다.

그렇습니다. 신이 만들었다고 여겨질 만큼 상상을 초월하는 기능을 가지고 있는 엑셀을 저는 무심하고 편리하게 사용하고 있었습니다.

간단히 엑셀의 장점을 적어보면

- 워드 프로세서로 사용될 만큼 강력한 문서 작성 기능(표 작성은 어떤 프로그램도 엑셀을 따라올 수 없음)

- 계산에 사용되는 수많은 함수들

- 외부 object와 손쉬운 연결

(인터넷 브라우저, mp3 플레이어, 엑셀로 탐색 기능 구현, 파일 이름 불러와서 변경하기, 엑셀에서 메모장 100개 열어서 그 속에 글자 집어넣고, 다른 이름으로 저장하기 등)

- 수많은 유저와 그들이 이미 만들어 놓고 공유하고 있는 수만 가지 예제 등이 있으며

- 간단한 DB로도 사용 가능

- 그래프, 차트, 피벗 기능 등등 다 나열하기 어려운 정도입니다.

알아가면 알수록 엑셀의 기능과 성능에 놀라게 됩니다. 아마 제가 엑셀에 대해서 알고 있는 수준을 %로 표시한다면 저는 엑셀 총 기능의 10% 정도 활용하고 있다고 생각합니다. 아직도 모르는 부분이 더 많이 있기는 하지만, 엑셀의 장점은 자신만의 방법으로 해결책을 찾아낼 수 있는 유연성이 있기에 엑셀의 기능을 많이 아는 것이 최선은 아니라고 생각됩니다.

 


 

아래 그림에서 빨간색 박스는 엑셀의 마지막 셀(열)을 찾는 명령어입니다. 약간 복잡하기 때문에 처음부터 이해하기 본다는 그냥 메모장에 붙여 넣고 사용하시면서 천천히 익혀 나가면 됩니다.

 

이미지 001.png

 

 

빨간색 박스에 있는 명령어로 우리가 찾아야 할 목표인 책 읽기 리스트 중에 변경된 사항을 찾기 위해서, , 파란색 박스 명령어를 이해하려고 합니다. 그런데  빨간색 ①번과 빨간색 ②번이 다른 점을 먼저 이해해야 합니다.

빨간색 ①번은 단 1번만 실행되고, 빨간색 ②번은 몇 번 실행될지 알 수 없다는 점입니다. 우리가 바라는 것은 1일차 부터 13일차까지 총 13번 루핑 돌기를 원합니다. 그런데, 위 명령어를 자세히 살펴보면, "For i = 6 to 맨끝열번호"입니다. 즉, 맨끝열번호 체크를 매번 새롭게 하고 있습니다. 그래서, 매크로 실행 도중에 맨끝열번호 뒤에 어떤 작업이 일어난다면 맨끝열번호는 변경합니다.

그래서, 일반적으로 맨끝열을 고정하는 작업을 하게 됩니다.

 

이미지 002.png

 

 

위 그림과 같이 MaxRow(마지막열)이라는 제가 마음대로 지은 이름으로 치환합니다. 그리고, for next 문구에 MaxRow를 적용하게 되면, 맨끝열번호는 변경하지 않고 18으로 고정됩니다.

이제 MaxRow를 사용해서 맨끝열번호를 고정했습니다. 파란색 박스를 살펴볼 차례입니다.

파란색 박스에 있는 명령어는 2가지로 구성되어 있습니다.

첫째 Cells(i, 4) - Cells(i, 3) <> 9 (끝페이지 - 시작페이지 = 9가 아니다)

둘째 Cells(i, 5) = 10    (읽은 페이지는 10이다)

얼핏 보기에 첫 번째 조건으로 충분해 보입니다.

그래서, 아래와 같이 두 번째 조건을 없앤, 첫 번째 조건만으로 매크로를 실행합니다.

이미지 003.png

 

 

첫 번째 조건으로도 2일차 데이터가 변경된 사항을 잘 찾아냅니다. 즉, 첫째 조건에 있는 9가 아니라는 뜻은 최초로 계획했던 9(페이지로 환산하면 10페이지)가 아닌 경우를 찾아서 그 행번호가 7이라고 알려 줍니다.

우리가 의도한 것처럼 변경된 데이터는 7째 줄(행, Row)라고 정확히 알려 주었기에, if 문 속에 있는 MsgBox i 대신에 필요한 명령어를 넣어서 매크로를 실행합니다.

 


이제부터 약간 어려운 로직이 시작됩니다.

우리는 엑셀 쉬트의 마지막이 18이며, 데이터가 바뀌열이 7인것을 알게 되었습니다.

쉬트를 수정하기 위한 개념은 아주 간단하지만, 논리적으로 프로그램하기는 쉽지 않습니다.

개념은 7번째 끝페이지가 변경되었기에, 읽은페이지 열을 끝페이지 - 시작페이지 +1 하면 되고,

그 아래행 부터는 처음 작성했던 로직을 다시 적용하면 됩니다.

(즉, 시작페이지는 바로 위행에 있는 끝페이지 +1, 끝페이지는 시작페이지 + 증감페이지 -1, 읽은페이지는  끝페이지 - 시작페이지 +1, 비고란은 처음 작성과 똑같이)

 


 

 

이미지 004.png

 

 

그래서, 조건에 만족하는 경우, 끝페이지 - 시작페이지 <> 9 인 경우를 만나면 그 행 아래에 작동하는 명령어를 넣어 줍니다.

간단한 방법으로 제가 자주 사용하는 것은 i_continue = True 입니다.

이제  i_continue = True 를 적용한 매크로 프로그램을 만들어 봅니다.

 

이미지 005.png

 

 

빨간색 ①번 i_continue 는 거짓입니다.

빨간색 ②번 I_continue는 참일 때부터 if 문이 실행됩니다.

빨간색 ③번 I_continue는 참인 조건입니다.

For i = 6일 때  i_continue 는 거짓이기 때문에 아무것도 하지 않습니다.

For i = 7일 때도  i_continue 는 거짓이기 때문에 아무것도 하지 않습니다.

그러나 7중간에서 i_continue는 참으로 변경됩니다.

그래서 For i = 8일 때부터  i_continue 는 참인 조건의 행동을 하게 됩니다.

파란색 ①번 ②번은 마지막 줄 처리를 위한 로직입니다.

그래서 위 매크로를 실행하게 되면 다음과 같이 결과가 나오게 됩니다.

 

이미지 006.png

 

 

7번 행의 끝페이지 변경에 따라서, 나머지 데이터들 모두 변경되었습니다. 마지막열 18번째 열도 깨끗하게 정리된 모습입니다.

그런데, 매크로가 복잡합니다. 직관적으로 작성되지 못했습니다.

다음 편에는 위와 똑같은 결과를 보여주면서, 아주 단순한 형태로 로직을 변경시키도록 하겠습니다.

우리는 좀 더 단순하고 직관적인 왕 초보용 매크로가 필요합니다.

다음 편에서 아주 단순한 왕 초보용 매크로를 만들는 법에 대해서 배워 봅니다.

 

책페이지3.xlsm 파일 다운로드

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )

List of Articles
번호 제목 글쓴이 날짜 조회 수
13 왕 초보용 엑셀 매크로(VBA) 배우기 - 1 (가장 중요한 3가지 기억하기) 4 file 지천명영어 2021.06.05 34597
12 왕 초보용 엑셀 매크로(VBA) 배우기 - 2 (중복 행 찾기 1/4) file 지천명영어 2022.01.12 4221
11 왕 초보용 엑셀 매크로(VBA) 배우기 - 3 (중복 행 찾기 2/4) file 지천명영어 2022.01.12 1677
10 왕 초보용 엑셀 매크로(VBA) 배우기 - 4 (중복 행 찾기 3/4) file 지천명영어 2022.01.12 1054
9 왕 초보용 엑셀 매크로(VBA) 배우기 - 5 (중복 행 찾기 4/4) 2 file 지천명영어 2022.01.12 1058
8 왕 초보용 엑셀 매크로(VBA) 배우기 - 6 (매일 10페이지 책읽기 프로그램 1/6) 1 file 지천명영어 2022.01.12 1236
7 왕 초보용 엑셀 매크로(VBA) 배우기 - 7 (매일 10페이지 책읽기 프로그램 2/6) file 지천명영어 2022.01.12 615
6 왕 초보용 엑셀 매크로(VBA) 배우기 - 8 (매일 10페이지 책읽기 프로그램 3/6) file 지천명영어 2022.01.12 468
» 왕 초보용 엑셀 매크로(VBA) 배우기 - 9 (매일 10페이지 책읽기 프로그램 4/6) 엑셀의 위대성 엑셀의 위대성에 대해서 간단히 알아보도록 하겠습니다. 회사 내근직을 한다면, 필수 프로그램으로 사용하고 있는 엑셀은 쉽게 접하고 매일 사용하... file 지천명영어 2022.01.12 351
4 왕 초보용 엑셀 매크로(VBA) 배우기 - 10 (매일 10페이지 책읽기 프로그램 5/6) file 지천명영어 2022.01.12 336
3 왕 초보용 엑셀 매크로(VBA) 배우기 - 11 (매일 10페이지 책읽기 프로그램 6/6) 1 file 지천명영어 2022.01.12 486
2 왕 초보용 엑셀 매크로(VBA) 배우기 - 12 (공백 행 일괄 삭제하기) file 지천명영어 2022.01.12 1263
1 왕 초보용 엑셀 매크로(VBA) 배우기 - 13 (문자 + 숫자 정렬) 2 file 지천명영어 2022.01.12 1338
Board Pagination Prev 1 Next
/ 1

LOGIN

SEARCH

MENU NAVIGATION