728x90

빈행제거



엑셀에서 중간 중간 빈행이 많아서 이걸 지우고 싶을 때 사용하는 VBA 코드다.

선택된 열 기준으로 빈셀을 만나면 그 행 전체를 지우므로 빈셀 옆에 데이터가 있어도 지워진다.

VBA는 간단한 프로그램이므로 내가 생각하는 것으로 해결이 어려우면 역발상으로 반대로 되는 걸 고려하여 실행하면 쉽게 풀리기도 한다.

통상적으로 빈행 삭제는 뒤에서부터 앞으로 실행해야 한다.


Sub 빈행삭제()
    Dim i As Double
    Dim LastRow As Double
    Dim r As Double
      
    Application.ScreenUpdating = False      '// 화면 업데이트 (일시) 정지
    LastRow = Cells(Rows.Count, "B").End(3).Row  '// 조건을 설정할 행 지정

    For i = LastRow To 1 Step -1
        If Cells(i, "C").Value = "" Then
            Cells(i, "C").EntireRow.Delete
            r = r + 1
        End If
    Next i
  
    MsgBox "총" & r & "행 삭제"
   
End Sub


또다른 방법으로 하면 달랑 코드 한줄이면 된다.

코드설명 : Columns("C") 는 C열 전체를 선택하고, SpecialCells(4)는 공백인 셀인 경우 EntireRow.Delete 행전체를 삭제하라. 즉, C열에서 공백인 셀이 있으면 그 행을 삭제하라


Sub 빈행삭제()

    // C열에 빈셀이 존재하면 모두 지워라.
    Columns("C").SpecialCells(4).EntireRow.Delete
    '// (4)는 xlCellTypeBlanks
End Sub


시스템에서 가져온 데이터의 경우에는 공백처럼 보이는데 공백이 아니라면 그 행은 Asc (아스키코드) 값을 먼저 알아내야 한다.


728x90
블로그 이미지

Link2Me

,