[Excel] 중복데이터를 지우는 VBA 코드
오늘은 5월20(토)일에 진행하는 장미희님의 Excel 매크로&VBA 과정 중 중복데이터를 지우는 VBA 코드에 대해서 알아보도록 하겠습니다. (사용버전: 공통)
엑셀 매크로 또는 엑셀 VBA는 엑셀사용자라면 언젠가는 도전하고 싶은 목표입니다. 실제 주변에서나 본인의 경험상 엑셀VBA로 엑셀 작업시간과 노력이 적게 드는 경우를 빈번하게 경험하고 있습니다. 엑셀 VBA로 편리하게 작업할 수 있는 예를 살펴보겠습니다.
이번 뉴스레터는 다음 뉴스레터와 연결되는 내용으로 중복데이터를 지우는 VBA코드를 알아보겠습니다. 아래의 상단 그림과 같이 성별과 부서명이 반복되면서 입력되어 있는 경우에 하단 그림처럼 VBA 정리하려고 합니다. 지면의 제한상 일부 데이터만 예로 든 것이고 실제 데이터는 대량의 데이터입니다.
[변경 전]
[변경 후]
1. 사용되는 명령어들
엑셀VBA작업을 하려면 VBA명령어에 대해 잘 알고 있어야 합니다.
- Range : 엑셀에서 셀을 지정할 때 사용하는 명령어. A3셀은 Range(“A3”)이라고 표현합니다. |
2. 사용되는 VBA 구문
VBA 문법이라고 생각하시면 됩니다. 일정한 범위를 반복해주는 For구문과 조건에 따라 다른 명령문을 수행하는 If구문을 사용합니다.
For Each 원소 In 집합개념의 범위 |
In 다음의 집합개념의 범위에 데이터가 입력된 전체범위를 지정하고 In 앞의 원소는 집합의 데이터를 하나씩 지칭합니다. For와 Next는 그 사이의 명령어들을 집합내의 데이터를 전부 다루도록 지정하는 역할을 합니다.
If 조건 Then |
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 |
오피스튜터 장미희 강사의 '엑셀 핵심 기능 콘사이스 199' 가 출간되었습니다.
|