VBA 매크로는 엑셀에서 다양한 작업을 실행할 때 가장 효과적이고 빠르며 안전한 방법입니다. 이 글에서는 VBA 매크로를 활용해 특정 조건에 따라 열을 삭제하는 방법을 단계별로 소개합니다.
예제 파일 내려받기
아래에서 연습용 엑셀 워크북을 무료로 내려받아 직접 실습해 볼 수 있습니다.
기본 문법
VBA를 사용해 열을 삭제할 때 사용하는 기본 문법은 다음과 같습니다.
Columns(열 번호 / 열 주소).Delete
이제 실제 예제를 통해 셀 값, 다른 워크시트, 표(Table) 등 다양한 기준으로 열을 삭제하는 방법을 살펴보겠습니다.
조건에 따라 열을 삭제하는 VBA 매크로 예제 8가지
이번 섹션에서는 VBA 매크로를 사용해 셀 값, 다른 워크시트, 표 등을 기준으로 열을 삭제하는 방법을 배웁니다.
설명에는 아래 데이터 집합을 예제로 사용합니다.

기준 1: 셀 값 기준으로 열 삭제
특정 셀 값이 있는 열을 삭제하려면 아래 단계를 따르세요.
단계:
- 키보드에서 Alt + F11을 누르거나 개발 도구 → Visual Basic 탭으로 이동해 Visual Basic 편집기를 엽니다.

- 코드 창이 열리면 메뉴 모음에서 삽입 → 모듈을 클릭합니다.

- 아래 코드를 복사해 코드 창에 붙여넣습니다.
Sub DeleteColumnsBasedOnCellValue()
Dim iCol As Long
Dim iWrk As Long
iCol = 10
For iWrk = iCol To 1 Step -1
If Cells(1, iWrk) = 2 Then
Columns(iWrk).Delete
End If
Next
End Sub
이제 코드를 실행할 준비가 되었습니다.

이 코드는 첫 행의 셀 값이 2로 시작하는 열을 삭제합니다.
- 키보드에서 F5를 누르거나 메뉴 모음에서 실행 → Sub/UserForm 실행을 선택합니다. 하위 메뉴 모음의 작은 재생(▶) 아이콘을 클릭해도 매크로를 실행할 수 있습니다.

결과는 아래와 같습니다.

셀 값이 2인 열들이 모두 삭제되었습니다.
더 읽어보기: 엑셀에서 VBA로 열 삭제하기
기준 2: 빈 셀이 포함된 열 삭제
빈 셀이 있는 열을 삭제하려면 아래 단계를 따르세요.
단계:
- 앞서와 같은 방법으로 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
- 코드 창에 아래 코드를 복사해 붙여넣습니다.
Sub DeleteBlankCells()
Range("A1:J10").Select '//range of the dataset
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireColumn.Delete
End Sub
코드 실행 준비가 완료되었습니다.

- 매크로를 실행합니다.

빈 셀을 포함한 모든 열이 삭제되었습니다.
기준 3: 완전히 비어 있는 열 삭제
다음 데이터 집합에는 비어 있는 열들이 있습니다. VBA 매크로로 이러한 빈 열을 삭제하는 방법을 알아보겠습니다.

단계:
- 앞서와 같은 방법으로 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
- 코드 창에 아래 코드를 복사해 붙여넣습니다.
Sub DeleteBlankCol()
Dim i As Integer
For i = 1 To 4
Columns(i + 1).Delete
Next i
End Sub
코드 실행 준비가 완료되었습니다.

- 매크로를 실행합니다.

비어 있던 열들이 모두 삭제되었습니다.
더 읽어보기: 엑셀에서 빈 열 삭제하기
기준 4: 인접하지 않은 여러 열 삭제
서로 떨어진 여러 열을 한 번에 삭제하려면 아래 단계를 따르세요.
단계:
- 앞서와 같은 방법으로 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
- 코드 창에 아래 코드를 복사해 붙여넣습니다.
Sub DeleteNAdjCol()
Range("C:E, G:I").Delete
End Sub
코드 실행 준비가 완료되었습니다.

- 매크로를 실행합니다.

C부터 E(Feb~Apr), 그리고 G부터 I(Jun~Aug)까지의 열들이 모두 삭제되었습니다.
함께 읽으면 좋은 글:
- 엑셀에서 사용하지 않는 열 삭제하는 가장 쉬운 5가지 방법
- 수식에 영향을 주지 않고 열 삭제하기 (2가지 방법)
- 엑셀에서 중복 열 삭제하는 6가지 방법
기준 5: 특정 워크시트의 열 삭제
특정 워크시트에서 열을 삭제하려면 아래 단계를 따르세요.
단계:
- 앞서와 같은 방법으로 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
- 코드 창에 아래 코드를 복사해 붙여넣습니다.
Sub DeleteColFromSheet()
Worksheets("New Column").Select '// set the sheet name
Columns("D:F").Delete
End Sub
코드 실행 준비가 완료되었습니다.

- 매크로를 실행합니다.

“New Column” 워크시트에서 D부터 F(Mar~May)까지의 열들이 삭제되었습니다.
기준 6: 표에서 열 하나 삭제
표(Table)에서 열을 삭제하려면 아래 단계를 따르세요.
단계:
- 앞서와 같은 방법으로 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
- 코드 창에 아래 코드를 복사해 붙여넣습니다.
Sub DeleteColTable()
Dim srcTable As ListObject
Dim srcSheet As Worksheet
'Set the table from which column is to be deleted
Set srcTable = ActiveSheet.ListObjects("ExTable")
'Set the sheet that contains the table
Set srcSheet = Sheet8
With srcSheet
srcTable.ListColumns(5).Delete
End With
End Sub
코드 실행 준비가 완료되었습니다.

- 매크로를 실행합니다.

표에서 5번째 열(Apr)이 삭제되었습니다.
기준 7: 표에서 여러 열 삭제
표에서 여러 개의 열을 삭제하려면 아래 단계를 따르세요.
단계:
- 앞서와 같은 방법으로 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
- 코드 창에 아래 코드를 복사해 붙여넣습니다.
Sub DeleteMColTable()
Dim srcTable As ListObject
Dim srcSheet As Worksheet
Dim i As Integer
'Set the table from which column is to be deleted
Set srcTable = ActiveSheet.ListObjects("ExTable2")
'Set the sheet that contains the table
Set srcSheet = Sheet9
'Run the loop twice as we need to delete 2 columns
For i = 1 To 2
With Source
srcTable.ListColumns(5).Delete
End With
Next i
End Sub
코드 실행 준비가 완료되었습니다.

- 매크로를 실행합니다.

표에서 5번째와 6번째 열(Apr, May)이 삭제되었습니다.
더 읽어보기: 엑셀에서 여러 열 삭제하는 방법
기준 8: 열 머리글 이름으로 표의 열 삭제
열 머리글(헤더) 이름을 기준으로 표에서 열을 삭제하려면 아래 단계를 따르세요.
단계:
- 앞서와 같은 방법으로 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
- 코드 창에 아래 코드를 복사해 붙여넣습니다.
Sub DeleteColHeaderTable()
Dim srcTable As ListObject
Dim srcSheet As Worksheet
Dim i As Integer
Dim colName As String
'Set the table from which column is to be deleted
Set srcTable = ActiveSheet.ListObjects("ExTable3")
'Set the sheet that contains the table
Set srcSheet = Sheet10
'Case sensitive
colName = "Apr"
'Loop through all the columns in the table
For i = 1 To srcTable.ListColumns.Count
With srcSheet
'Check the column header
If srcTable.ListColumns(i).Name = colName Then
srcTable.ListColumns(i).Delete
Exit For
End If
End With
Next i
End Sub
코드 실행 준비가 완료되었습니다.

- 매크로를 실행합니다.

머리글 이름이 Apr인 열이 표에서 삭제되었습니다.
마무리
이 글에서는 VBA 매크로를 활용해 엑셀에서 8가지 서로 다른 조건에 따라 열을 삭제하는 방법을 알아보았습니다. 실무에서 반복적인 열 정리 작업을 자동화하는 데 큰 도움이 되기를 바랍니다. 궁금한 점이 있다면 언제든 질문해 주세요.
추천 학습 콘텐츠
- 수식을 지우지 않고 엑셀 내용만 지우는 3가지 방법
- 엑셀에서 불필요한 열 삭제하는 7가지 방법