도쿄사는 외노자

VBA 중복행 삭제 본문

Tech/VBA

VBA 중복행 삭제

Enrai 2020. 1. 14. 20:28

1. 모든 열의 중복행 삭제

'지정한 워크시트에서 중복행 삭제
Sub DeleteDuplicate(TargetSheet)
    '시트 설정
    Set SumSheet = ThisWorkbook.Sheets(TargetSheet)
    
    '데이터의 마지막 행 취득
    Dim intArray As Variant, i As Integer
    Dim rng As Range
    Set rng = SumSheet.UsedRange.Rows

    With rng
        '모든 칼럼을 비교
        ReDim intArray(0 To .Columns.Count - 1)
        For i = 0 To UBound(intArray)
            intArray(i) = i + 1
        '중복되는 데이터 삭제
        Next i
        .RemoveDuplicates Columns:=(intArray), Header:=xlNo
    End With
End Sub

2. 하나의 열에서 중복행 삭제

'특정 시트의 지정한 열에서 중복 삭제
Sub DeleteDuplicateCol(TargetSheetName, StartRow, Col)
    
    Dim TargetSheet As Worksheet
    Dim EndRow As Integer
    
    Set TargetSheet = ThisWorkbook.Sheets(TargetSheetName)
    EndRow = TargetSheet.Cells(TargetSheet.Rows.Count, Col).End(xlUp).Row
    
    '지정한 열을 대상으로 StartRow~EndRow에서 중복 삭제
    Range(TargetSheet.Cells(StartRow, Col), TargetSheet.Cells(EndRow, Col)).RemoveDuplicates _
    Columns:=Array(1), Header:=xlYes
    
End Sub

사용 방법은 아래와 같다.

Dim shtWork As String
shtWork = "Work"

Dim targetCol As Integer
targetCol = 2

'시트의 전체 열 비교하여 중복행 삭제
Call DeleteDuplicateCol(TargetSheetName:=shtWork)

'지정한 열의 중복행 삭제
Call DeleteDuplicateCol(TargetSheetName:=shtWork, StartRow:=2, Col:=targetCol)