엑셀 매크로 또는 엑셀 VBA는 엑셀사용자라면 언젠가는 도전하고 싶은 목표입니다. 실제 주변에서나 본인의
경험상 엑셀VBA로 엑셀 작업시간과 노력이 적게 드는 경우를 빈번하게 경험하고 있습니다. 엑셀 VBA로 편리하게
작업할 수 있는 예를 살펴보겠습니다.
이번 뉴스레터는 다음 뉴스레터와 연결되는 내용으로 중복데이터를 지우는 VBA코드를 알아보겠습니다. 아래의
상단 그림과 같이 성별과 부서명이 반복되면서 입력되어 있는 경우에 하단 그림처럼 VBA 정리하려고 합니다. 지면의
제한상 일부 데이터만 예로 든 것이고 실제 데이터는 대량의 데이터입니다.
[변경 전]
[변경
후]
1. 사용되는 명령어들
엑셀VBA작업을 하려면 VBA명령어에 대해 잘 알고 있어야 합니다.
- Range : 엑셀에서 셀을 지정할 때 사용하는 명령어. A3셀은 Range(“A3”)이라고
표현합니다.
- ClearContents : 셀에 입력된 내용만 지울 때 사용합니다. 서식은 그대로
유지됩니다. |
2. 사용되는 VBA 구문
VBA 문법이라고 생각하시면 됩니다. 일정한 범위를 반복해주는 For구문과 조건에 따라 다른 명령문을
수행하는 If구문을 사용합니다.
For Each 원소 In 집합개념의 범위
명령어들
Next |
In 다음의 집합개념의 범위에 데이터가 입력된 전체범위를 지정하고 In 앞의 원소는 집합의 데이터를 하나씩 지칭합니다.
For와 Next는 그 사이의 명령어들을 집합내의 데이터를 전부 다루도록 지정하는 역할을 합니다.
If 조건 Then
참일 경우의 명령문
Else
거짓일 경우의 명령문
End If |
If구문은 엑셀의 If함수와 동일한 역할을 합니다. 조건에 참인 경우와 거짓인 경우에 따라 명령문을 다르게
지정합니다.
3. 실제 작성한 VBA 코드입니다.
Sub 중복지우기()
기준셀값 = Range("A3")
For Each 셀 In Range("A4:A30")
If 기준셀값 = 셀.Value Then
** 남에서 여가 입력된 처음 셀일 때 실행됩니다.
셀.ClearContents
Else
기준셀값 = 셀.Value
End If
Next
기준셀값 = Range("B3")
For Each 셀 In Range("B4:B30")
If 기준셀값 = 셀.Value Then
** 부서명이 변경되는 처음 셀일 때 실행됩니다.
셀.ClearContents
Else
기준셀값 = 셀.Value
End If
Next
End Sub
|