VBA 중복개수 표시
CountIF 함수를 사용하여 중복된 것만 개수를 표시하는 VBA 코드입니다.
아래 코드를 활용할 경우 초보자는 주황색으로 표시된 부분만 고쳐서 이용하면 됩니다.
하는 방법은 엑셀에서 Alt + F11 키 누르면 나오는 창에서 [삽입] - [모듈] 누르고 나오는 화면에 코드를 복사하여 붙여넣기 하고요. 코드 사이에서 마우스 커서 놓고 F5키 누르면 됩니다.
Sub 중복개수표시()
Dim rngC, rngT As Range '// 각 셀을 넣을 변수
Dim rngAll As Range '// 전체 데이터 영역을 넣을 변수
Dim rngVariable As Range '// 변하는 영역변수
Dim i As Integer
Set rngAll = Range([C2], Cells(Rows.Count, "C").End(3)) '// C열 전체를 범위로 지정
Set rngT = [C2] '// 위가 [C2] 이면 똑같이 C2 로 지정
Range([E2], Cells(Rows.Count, "E").End(3)).ClearContents '// 중복을 표시할 열이 설정된 값 초기화
For Each rngC In rngAll
Set rngVariable = Range(rngT, rngC)
'// COUNTIF(범위,조건) : 범위에서 조건에 맞는게 몇개인지 카운트하라
If Application.CountIf(rngVariable, rngC) <> 1 Then '// 1인 것은 표시하지 말라
rngC.Offset(0, 2) = Application.CountIf(rngVariable, rngC)
'// 중복된 숫자를 표시할 열로서 검사하는 열로부터 오른쪽 2번째 열에 표시하라
i = i + 1
End If
Next rngC
Set rngAll = Nothing '// 변수 초기화
MsgBox "총 " & i & "개 중복발생"
End Sub
이 코드를 이용하여 행의 수가 52000개 되는 우편번호 주소를 편집하여 검색했더니 overflow 가 나온다.
엑셀에서 제공하는 중복제거 함수를 이용했더니 순식간에 중복을 제거하고 결과를 알려준다.
그냥 무작정 이런 코드를 쓰는 것보다, 엑셀의 기본기능을 잘 이용하고 적절한 함수를 쓰는 것이 훨씬 더 빠른 결과를 가져올 수 있다는 걸 알게 되었다.
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 현 시트내용을 서식 포함 여러개 파일로 분할 저장 (0) | 2014.08.27 |
---|---|
[VBA] 노래가사 파일 내보내기 (0) | 2014.08.24 |
[VBA]MySQL 데이터 엑셀로 가져오기 (0) | 2014.07.28 |
VBA 와 MYSQL 연동 준비작업 (0) | 2014.07.28 |
날씨정보 추출 (1) | 2014.06.22 |