Triển khai macro VBA là phương pháp hiệu quả, nhanh nhất và an toàn nhất chạy thao tác trong Excel. Bài viết chỉ cách xóa cột dựa trên tiêu chí trong Excel với macro VBA.
Tải tệp thực hành
Bạn có thể tải tệp Excel thực hành miễn phí từ đây.
Cú pháp chung
Cú pháp chung xóa cột trong Excel dùng VBA là:
Columns(số cột/ địa chỉ cột).Delete
8 ví dụ Macro VBA xóa cột dựa trên tiêu chí trong Excel
Phần này học cách xóa cột dựa trên giá trị ô, dựa trên trang tính khác, và dựa trên bảng với macro VBA trong Excel.
Sử dụng tập dữ liệu sau làm ví dụ.
Tiêu chí 1: Macro VBA xóa cột dựa trên giá trị ô trong Excel
Các bước xóa cột dựa trên giá trị ô trong Excel với VBA:
Các bước:
- Nhấn Alt + F11 hoặc vào tab Developer -> Visual Basic mở Trình soạn thảo Visual Basic.
- Trong cửa sổ mã, từ thanh menu nhấn Chèn -> Module.
- Sao chép mã sau dán vào cửa sổ mã.
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
Mã sẵn sàng chạy.
- Nhấn F5 hoặc từ menu chọn Run -> Run Sub/UserForm. Có thể nhấn biểu tượng Play nhỏ thanh menu con chạy macro.
Mã này xóa cột bắt đầu bằng giá trị ô 2.
Kết quả: Cột bắt đầu giá trị ô 2 bị xóa.
Đọc thêm: VBA xóa cột trong Excel
Tiêu chí 2: Macro VBA xóa cột dựa trên ô trống trong Excel
Các bước xóa cột có ô trống trong Excel với VBA:
- Cách giống trước, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Module cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau dán vào.
Sub DeleteBlankCells()
Range("A1:J10").Select '//phạm vi tập dữ liệu
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireColumn.Delete
End Sub
Mã sẵn sàng chạy.
- Chạy macro.
Tất cả cột chứa ô trống đã bị xóa.
Tiêu chí 3: Macro VBA xóa cột trống trong Excel
Xem tập dữ liệu có cột trống. Sẽ thấy cách xóa cột trống này trong Excel với VBA macro.
- Cách giống trước, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Module cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau dán vào.
Sub DeleteBlankCol()
Dim i As Integer
For i = 1 To 4
Columns(i + 1).Delete
Next i
End Sub
Mã sẵn sàng chạy.
- Chạy macro.
Tất cả cột trống bị xóa.
Đọc thêm: Xóa cột trống trong Excel
Tiêu chí 4: Macro VBA xóa cột không liền kề trong Excel
Các bước xóa nhiều cột không liền kề trong Excel với VBA:
- Cách giống trước, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Module cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau dán vào.
Sub DeleteNAdjCol()
Range("C:E, G:I").Delete
End Sub
Mã sẵn sàng chạy.
- Chạy macro.
Tất cả cột trước từ C đến E (Tháng 2 đến 4) và G đến I (Tháng 6 đến 8) đã bị xóa.
Tiêu chí 5: Macro VBA xóa cột dựa trên trang tính cụ thể trong Excel
Các bước xóa cột từ trang tính cụ thể trong Excel với VBA:
- Cách giống trước, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Module cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau dán vào.
Sub DeleteColFromSheet()
Worksheets("New Column").Select '// đặt tên trang
Columns("D:F").Delete
End Sub
Mã sẵn sàng chạy.
- Chạy macro.
Tất cả cột trước từ D đến F (Tháng 3 đến 5) từ trang "New Column" đã bị xóa.
Tiêu chí 6: Macro VBA xóa cột dựa trên bảng trong Excel
Các bước xóa cột từ bảng trong Excel với VBA:
- Cách giống trước, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Module cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau dán vào.
Sub DeleteColTable()
Dim srcTable As ListObject
Dim srcSheet As Worksheet
'Đặt bảng cần xóa cột
Set srcTable = ActiveSheet.ListObjects("ExTable")
'Đặt trang chứa bảng
Set srcSheet = Sheet8
With srcSheet
srcTable.ListColumns(5).Delete
End With
End Sub
Mã sẵn sàng chạy.
- Chạy macro.
Cột 5 (Tháng 4) bị xóa khỏi bảng.
Tiêu chí 7: Macro VBA xóa nhiều cột dựa trên bảng trong Excel
Các bước xóa nhiều cột từ bảng trong Excel với VBA:
- Cách giống trước, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Module cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau dán vào.
Sub DeleteMColTable()
Dim srcTable As ListObject
Dim srcSheet As Worksheet
Dim i As Integer
'Đặt bảng cần xóa cột
Set srcTable = ActiveSheet.ListObjects("ExTable2")
'Đặt trang chứa bảng
Set srcSheet = Sheet9
'Chạy vòng lặp 2 lần vì cần xóa 2 cột
For i = 1 To 2
With Source
srcTable.ListColumns(5).Delete
End With
Next i
End Sub
Mã sẵn sàng chạy.
- Chạy macro.
Cột 5 và 6 (Tháng 4 và 5) đã bị xóa khỏi bảng.
Đọc thêm: Cách xóa nhiều cột trong Excel
Tiêu chí 8: Macro VBA xóa cột từ bảng dựa trên tiêu đề cột trong Excel
Các bước xóa cột từ bảng dựa trên tiêu đề cột trong Excel với VBA:
- Cách giống trước, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Module cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau dán vào.
Sub DeleteColHeaderTable()
Dim srcTable As ListObject
Dim srcSheet As Worksheet
Dim i As Integer
Dim colName As String
'Đặt bảng cần xóa cột
Set srcTable = ActiveSheet.ListObjects("ExTable3")
'Đặt trang chứa bảng
Set srcSheet = Sheet10
'Phân biệt chữ hoa/thường
colName = "Apr"
'Lặp qua tất cả cột trong bảng
For i = 1 To srcTable.ListColumns.Count
With srcSheet
'Kiểm tra tiêu đề cột
If srcTable.ListColumns(i).Name = colName Then
srcTable.ListColumns(i).Delete
Exit For
End If
End With
Next i
End Sub
Mã sẵn sàng chạy.
- Chạy macro.
Tiêu đề cột tên Apr bị xóa khỏi bảng.
Kết luận
Bài viết chỉ cách xóa cột dựa trên 8 tiêu chí khác nhau trong Excel với macro VBA. Hy vọng bài viết rất hữu ích. Tự do hỏi bất kỳ câu hỏi nào về chủ đề.
Có thể bạn muốn khám phá
- Cách xóa nội dung trong Excel mà không xóa công thức (3 cách)
- Xóa cột thừa trong Excel (7 phương pháp)