엑셀에 VBA 코드를 사용하지 않고 빈 셀을 제거하는 방법은 여러가지가 있습니다. 이동 옵션에서 빈 셀을 선택해서 삭제하거나 조건부 서식을 이용하는 등의 방법들이 제공되고 있습니다. 오늘은 VBA 코드로 영역에 빈 셀을 삭제해 보도록 하겠습니다. 또한 빈 셀이 포함된 행 자체를 삭제하는 방법도 다룰 것입니다. 이것은 DB 데이터 정리할 때 유용한 코드입니다.
▼ 샘플은 다음과 같습니다. B2:C8 영역에 있는 빈 셀을 하나씩 삭제할 것입니다. 그리고 함수를 실행할 버튼도 하나 생성했습니다.
▼ 먼저 삭제하고자 하는 영역을 가져와야 합니다. Range 함수를 사용해서 영역을 가져온 후 For Each 문을 사용해서 영역의 값을 하나씩 꺼냅니다. 이해를 돕기 위해 Debug.print 함수를 사용해서 어떤 값들인지 출력해 보았습니다.
Dim rng As Range
Dim rCell As Range
Set rng = ActiveSheet.Range("B2:C8")
For Each rCell In rng.Cells
Debug.Print rCell.Address, rCell.Value
Next rCell
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 행, 열 삭제 및 추가하기 ▶ 엑셀 VBA 마지막 행과 열의 수 찾기 ▶ 엑셀(Excel) VBA - 행이나 열 전체를 선택하고자 할 때 ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 |
▼ 다음은 For Each 안에 빈 셀 여부를 판단하고 삭제하는 소스가 들어가야겠죠. 셀을 삭제하는 함수는 Delete 입니다. rCell 에 든 값이 공백이면 Delete 함수를 수행합니다. 그림은 아래 함수를 실행한 결과 입니다. 제대로 삭제가 되었네요. 하지만 아래 소스는 경우에 따라서 문제가 생길 수 있습니다. 이것은 실시간으로 삭제하는 과정에서 이전 영역이 계속해서 변하기 때문입니다. 그래서 삭제한 데이터를 다른 곳에 복사했다가 다시 원래 자리로 옮기는 방법도 사용합니다.
Sub BlankCellDelete()
Dim rng As Range
Dim rCell As Range
Set rng = ActiveSheet.Range("B2:C8")
For Each rCell In rng.Cells
If rCell.Value = "" Then
rCell.Delete
End If
Next rCell
End Sub
▼ 이번에는 셀을 삭제하는 소스를 응용해서 빈 셀이 포함된 행 전체를 삭제해 보도록 하겠습니다. 그림처럼 연락처가 없는 데이터 전체를 삭제하고 싶은 경우입니다. 주로 데이터베이스에서 백업 받은 불필요한 데이터를 관리할 때 많이 사용하는 방법입니다. 방법은 간단합니다.
▼ 셀의 속성 중 행/열 전체를 나타내는 EntireRow/EntireColumn 을 사용하는 것입니다. 이전에 셀을 삭제하던 Delete 대신 행을 삭제할 것이므로 EntireRow.Delete 함수를 넣고 실행합니다.
Sub BlankRowDelete()
Dim rng As Range
Dim rCell As Range
Set rng = ActiveSheet.Range("B4:E13")
For Each rCell In rng.Cells
If rCell.Value = "" Then
rCell.EntireRow.Delete
End If
Next rCell
End Sub
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 행, 열 삭제 및 추가하기 ▶ 엑셀 VBA 마지막 행과 열의 수 찾기 ▶ 엑셀(Excel) VBA - 행이나 열 전체를 선택하고자 할 때 ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 이미지 셀 크기에 자동으로 삽입하는 매크로 만들기 (6) | 2023.08.08 |
---|---|
엑셀 VBA 시트 테두리 선 그리는 방법 (0) | 2023.08.07 |
엑셀 VBA 정규표현식 사용하는 방법, 공백 문자 제거하기 (0) | 2023.07.20 |
엑셀 VBA 반복문 Do While 사용하기 (3) | 2023.07.19 |
엑셀 VBA 메시지박스 (MsgBox) 에 문자열 줄 바꿈을 적용하는 방법 (0) | 2023.07.09 |
엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 (0) | 2023.07.09 |
엑셀 VBA 개발할 때 로그 출력하는 방법 (0) | 2023.07.08 |
엑셀 VBA 콤보 상자에 하나 혹은 여러 개의 열 추가하는 방법 (0) | 2023.07.08 |