Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Office

8 Macro VBA xóa cột Excel theo tiêu chí – Nhanh & An toàn

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)