Xóa dòng trống theo điều kiện của 1 cột.

  • Thread starter Thread starter Thien
  • Ngày gửi Ngày gửi
Liên hệ QC

Thien

Thành viên thường trực
Tham gia
23/6/06
Bài viết
352
Được thích
113
Chào cả nhà.
Mình sưu tầm được 1 đoạn code cho phép xóa dòng theo điều kiện của 1 cột.
Mã:
Sub Loop_Example()
    Dim Firstrow As Long
    Dim Lastrow As Long
    Dim Lrow As Long
    Dim CalcMode As Long
    Dim ViewMode As Long

    With Application
        CalcMode = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With

    'We use the ActiveSheet but you can replace this with
    'Sheets("MySheet")if you want
    With ActiveSheet

        'We select the sheet so we can change the window view
        .Select

        'If you are in Page Break Preview Or Page Layout view go
        'back to normal view, we do this for speed
        ViewMode = ActiveWindow.View
        ActiveWindow.View = xlNormalView

        'Turn off Page Breaks, we do this for speed
        .DisplayPageBreaks = False

        'Set the first and last row to loop through
        Firstrow = .UsedRange.Cells(1).Row
        Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row

        'We loop from Lastrow to Firstrow (bottom to top)
        For Lrow = Lastrow To Firstrow Step -1

            'We check the values in the A column in this example
            With .Cells(Lrow, "B")

                If Not IsError(.Value) Then

                    If .Value = "0" Then .EntireRow.Delete
                    'This will delete each row with the Value "ron"
                    'in Column A, case sensitive.

                End If

            End With

        Next Lrow

    End With

    ActiveWindow.View = ViewMode
    With Application
        .ScreenUpdating = True
        .Calculation = CalcMode
    End With

End Sub
.

Có vấn đề phát sinh là nếu dữ liệu có khoảng 40.000 dòng thì code trên chạy rất lâu.
Hiện Tôi đang dùng code này nhưng thấy chậm nên lên đây nhờ các bạn có code nào chạy nhanh hơn hoặc cải tiến được code thì tốt quá.
Tôi biết do tổ chức CSDL chưa hợp lý nên có nhiều dòng trống trong 40.000 dòng. Mong các bạn đừng bàn luận & phán xét.

Thân chào.
 
Theo tôi nên dùng Autofilter để xóa dòng trống hiệu quả hơn.

Trường hợp 1: xóa tất cả các dòng trống (xóa cả dòng có công thức nhưng kết quả là 0)
Mã:
Sub Macro1()
    On Error Resume Next
    [COLOR="red"]ActiveWindow.DisplayZeros =0[/COLOR]
    EnR = [a65536].End(3).Row
    [a3].Resize(EnR).AutoFilter 1, "="
    [a4].Resize(EnR).EntireRow.Delete
    ActiveSheet.AutoFilterMode = 0
End Sub

Trường hợp 2: chỉ xóa các dòng trống thực sự (không xóa dòng có công thức nhưng kết quả là 0)
thì trong code trên sửa câu lệnh ActiveWindow.DisplayZeros = 1
 
Upvote 0
Còn nếu như dòng chứa công thức nhưng bị lỗi #REF! thi xoa lun thì làm thế nào vậy bạn
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom