728x90

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 가 나온다.

엑셀에서 제공하는 중복제거 함수를 이용했더니 순식간에 중복을 제거하고 결과를 알려준다.

그냥 무작정 이런 코드를 쓰는 것보다, 엑셀의 기본기능을 잘 이용하고 적절한 함수를 쓰는 것이 훨씬 더 빠른 결과를 가져올 수 있다는 걸 알게 되었다.

블로그 이미지

Link2Me

,