Cách xóa hàng loạt cột trong nhiều sổ làm việc Excel

Chia sẻ ngay bây giờ:

Việc mọi người lưu dữ liệu bí mật trong sổ làm việc Excel là điều rất bình thường. Khi phải chia sẻ những sổ làm việc này với đồng nghiệp hoặc bạn bè khác, xóa thủ công là lựa chọn duy nhất khả dụng. Tuy nhiên, với bài viết này, bạn sẽ học cách xóa nhanh các cột bí mật hoặc các cột không mong muốn khỏi nhiều sổ làm việc.

Tải xuống Ngay

Nếu bạn muốntart để sử dụng phần mềm càng sớm càng tốt, sau đó bạn có thể:

Tải xuống phần mềm ngay bây giờ

Còn không, nếu bạn muốn DIY, bạn có thể đọc nội dung bên dưới.

Hãy chuẩn bị GUI

Như trong hình, đổi tên Sheet 1 thành “ControlPanel”. Bằng cách sử dụng các hình dạng, chúng tôi sẽ thêm các Nút trên trang tính này để làm cho nó xuất hiện dưới dạng GUI (Giao diện người dùng đồ họa) cho công cụ này. Chúng tôi cần ba trường trên GUI này. Trường 1 dùng để hiển thị sổ làm việc được người dùng chọn. Trường 2 dùng để hiển thị các cột từ sổ làm việc đã chọn dưới dạng thả xuống. Trường 3 là danh sách các cột cần xóa khỏi sổ làm việc.Chuẩn bị GUI

Cách sử dụng?

Mã VBAQuy trình p_fpick sẽ cho phép người dùng duyệt và chọn các tệp Excel. Ngay sau khi tệp Excel được chọn, tập lệnh sẽ đọc tên cột từ Trang tính 1 và những tên này được hiển thị dưới dạng thả xuống. Quy trình “Add_Column” sẽ cho phép người dùng thêm tên cột đã chọn từ trình đơn thả xuống để thêm vào danh sách các cột cần xóa. Quy trình cuối cùng “Xóa_Columns” sẽ mở sổ làm việc được liệt kê trong trường “Chọn sổ làm việc” và sẽ xóa tất cả các cột đã chọn. Sau khi xóa, sổ làm việc sẽ được lưu và đóng lại.

Sub P_fpick()
    Dim v_fd As Office.FileDialog
    Set v_fd = Application.FileDialog(msoFileDialogFilePicker)
    With v_fd
        .AllowMultiSelect = False
        .Title = "Please select the Excel workbook"
        .Filters.Clear
        .Filters.Add "Excel", "*.xls*"
        If .Show = True Then
            cp.Range("B4").Value = .SelectedItems(1)
        End If
    End With
    
    Dim wb As Workbook
    Dim ab As Workbook
    
    Set ab = ThisWorkbook
    Set wb = Workbooks.Open(cp.Range("B4").Value)
    
    Dim v_sheets As String
    v_sheets = ""
    
    Dim lc As Long
    lc = wb.Sheets(1).Range("AZ1").End(xlToLeft).Column
    Dim c As Long
    For c = 1 To lc
        If v_sheets = "" Then
            v_sheets = wb.Sheets(1).Cells(1, c).Value
        Else
            v_sheets = v_sheets & "," & wb.Sheets(1).Cells(1, c).Value
        End If
    Next
    
    wb.Close False
    ab.Activate
    
    With ab.Sheets(1).Range("N4:O5").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=v_sheets
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With    
    
End Sub

Sub Add_Column()
    If Range("Q4").Value = "" Then
        Range("Q4").Value = Range("N4").Value
    Else
        Range("Q4").Value = Range("Q4").Value & "," & Range("N4").Value
    End If
End Sub

Sub Delete_Columns()
    Dim v_sheets() As String
    Dim ab As Workbook
    Dim wb As Workbook
    Set ab = ThisWorkbook
    Set wb = Workbooks.Open(Sheets(1).Range("B4").Text)
    Dim lc As Long
    lc = wb.Sheets(1).Range("AZ1").End(xlToLeft).Column
    Dim c As Long
    
    v_sheets = Split(ab.Sheets(1).Range("Q4").Text, ",")
    Dim intcount As Long
    For intcount = LBound(v_sheets) To UBound(v_sheets)
        For c = 1 To lc
            If wb.Sheets(1).Cells(1, c).Value = v_sheets(intcount) Then
                wb.Sheets(1).Columns(c).Delete Shift:=xlToLeft
            End If
        Next c
    Next intcount
    wb.Close True
    ab.Activate
End Sub

tinh chỉnh nó

Hiện tại, tập lệnh này chỉ xử lý một sổ làm việc. Tuy nhiên, bằng cách sử dụng phương pháp hàng được sử dụng gần đây nhất, bạn có thể làm cho macro xử lý nhiều sổ làm việc ở chế độ hàng loạt. Tuy nhiên, tập lệnh không thể mở một Excel bị hỏng sách bài tập.

Giới thiệu tác giả:

Nick Vipond là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm phục hồi từ và các sản phẩm phần mềm khôi phục triển vọng. Để biết thêm thông tin, hãy truy cập www.datanumennăm.

Chia sẻ ngay bây giờ:

Được đóng lại.