배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   2003
검색어:   중복 데이터
제목:   중복 데이터를 지우는 VBA 코드(1)
     
 

 

 [Excel] 중복 데이터를 지우는 VBA 코드(1)

  오늘은 5월20(토)일에 진행하는 장미희님Excel 매크로&VBA 과정 중복 데이터를 지우는 VBA 코드에 대해서 알아보도록 하겠습니다. (사용버전: 공통)

  엑셀 매크로 또는 엑셀 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