Menu

Tự động hóa việc xóa các dòng trống trong Excel bằng VBA

Thiện Nghĩa Thanh 12/06/2026 22:57 167 lượt xem 3 trả lời

Chào mọi người,

Dạo này làm việc với dữ liệu Excel nhiều, mình thường xuyên gặp phải tình trạng file có nhiều dòng trống, gây khó khăn trong việc lọc, sắp xếp và phân tích dữ liệu. Mình đã thử xóa thủ công nhưng với file dung lượng lớn thì mất rất nhiều thời gian.

Hôm nay, mình chia sẻ một đoạn code VBA đơn giản để tự động xóa các dòng trống này. Hy vọng sẽ giúp ích cho các bạn:

Sub XoaDongTrong()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    Set ws = ThisWorkbook.ActiveSheet ' Hoặc chỉ định sheet cụ thể: Set ws = ThisWorkbook.Sheets("TenSheetCuaBan")

    Application.ScreenUpdating = False ' Tắt cập nhật màn hình để code chạy nhanh hơn

    lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row ' Lấy dòng cuối cùng dựa trên cột A, bạn có thể thay đổi cột này

    For i = lastRow To 1 Step -1 ' Duyệt từ dưới lên để tránh lỗi khi xóa dòng
        If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then
            ws.Rows(i).Delete
        End If
    Next i

    Application.ScreenUpdating = True ' Bật lại cập nhật màn hình
    MsgBox "Đã xóa xong các dòng trống!", vbInformation
End Sub

Giải thích code:

  • Code sẽ duyệt từng dòng từ dưới lên.
  • Sử dụng hàm CountA để đếm số ô không trống trong dòng. Nếu kết quả bằng 0 nghĩa là dòng đó trống hoàn toàn.
  • Tiến hành xóa dòng trống đó.
  • Lưu ý: Bạn có thể thay đổi cột dùng để xác định dòng cuối cùng ("A") hoặc chỉ định tên sheet cụ thể nếu muốn.

Chúc các bạn áp dụng thành công!

5

Mình cũng hay gặp tình trạng tương tự, file dữ liệu càng ngày càng phình to mà toàn dòng trống. Code bạn chia sẻ nhìn gọn gàng, chắc sẽ hữu ích lắm đây.

Mình có thắc mắc nhỏ là nếu dòng trống đó nằm xen kẽ với các dòng có dữ liệu, code này có xử lý được không? Hay nó chỉ xóa các khối dòng trống liên tiếp thôi?

1

Code bạn chia sẻ khá hay đó! Mình cũng hay dùng một cách tương tự, nhưng thêm điều kiện để chỉ xóa những dòng hoàn toàn trống (không có bất kỳ ký tự nào, kể cả khoảng trắng).

Cách của mình thế này:

``vba Sub XoaDongHoanToanTrong() Dim ws As Worksheet Dim rng As Range Dim cell As Range

Set ws = ThisWorkbook.ActiveSheet Set rng = ws.UsedRange

' Lặp ngược từ dưới lên để tránh lỗi khi xóa dòng For i = rng.Rows.Count To 1 Step -1 ' Kiểm tra xem dòng đó có thực sự trống không If Application.WorksheetFunction.CountA(rng.Rows(i)) = 0 Then rng.Rows(i).Delete End If Next i

MsgBox "Đã xóa các dòng trống hoàn toàn!", vbInformation End Sub ``

Cách này đảm bảo là chỉ những dòng "trắng tinh" mới bị xóa. Không biết code của bạn có xử lý trường hợp này không, hay có cách nào tối ưu hơn nữa không nhỉ? Chia sẻ thêm cho anh em học hỏi nhé!

5

Mình cũng hay xử lý các file dữ liệu lớn và việc xóa dòng trống thủ công thực sự tốn thời gian. Đoạn code bạn chia sẻ nhìn khá trực quan.

Mình có một câu hỏi nhỏ, nếu trong file của mình có những dòng hoàn toàn trống (không có bất kỳ ký tự nào, kể cả khoảng trắng), code của bạn có xử lý được không, hay nó chỉ xóa những dòng trống có chứa khoảng trắng?

5

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký