Trong quá trình xử lý dữ liệu Excel, việc xuất hiện các dòng trống xen kẽ thường gây khó khăn khi lọc, sắp xếp hoặc xuất báo cáo. Thay vì phải tìm và xóa thủ công từng dòng, ta có thể tự động hóa thao tác này bằng VBA.
Macro dưới đây giúp bạn xóa nhanh toàn bộ các dòng trống trong vùng dữ liệu được chọn — cực kỳ hữu ích khi làm sạch dữ liệu nhập từ hệ thống, file CSV, hoặc báo cáo dài.
Đây là đoạn mã hoàn chỉnh (bạn có thể chép vào Module trong VBA Editor của Excel):
Option Explicit
Sub DeleteBlankRows()
Dim i As Long
Dim rng As Range
'Gán vùng dữ liệu hiện được chọn
Set rng = Selection
'Duyệt ngược từ cuối lên đầu để tránh lỗi khi xóa dòng
For i = rng.Rows.Count To 1 Step -1
'Kiểm tra nếu toàn bộ dòng đều trống (không có dữ liệu)
If WorksheetFunction.CountA(rng.Rows(i)) = 0 Then
'Xóa toàn bộ dòng
rng.Rows(i).EntireRow.Delete
'Nếu chỉ muốn xóa trong phạm vi chọn, dùng dòng dưới:
'rng.Rows(i).Delete Shift:=xlUp
End If
Next i
End Sub- Mở file Excel có chứa dữ liệu.
- Nhấn Alt + F11 để mở VBA Editor, chọn Insert → Module.
- Dán toàn bộ đoạn mã trên vào module.
- Quay lại Excel, nhấn Alt + F8, chọn macro DeleteBlankRows, rồi bấm Run.
Giới hạn vùng cột: nếu chỉ muốn kiểm tra các cột nhất định (A:D chẳng hạn), bạn có thể sửa:
Set rng = Range("A:D")Tự động áp dụng cho toàn bộ sheet:
Set rng = ActiveSheet.UsedRangeMacro DeleteBlankRows là một ví dụ điển hình về tự động hóa thao tác làm sạch dữ liệu bằng VBA, vừa ngắn gọn, vừa hiệu quả. Nó giúp bạn tiết kiệm hàng giờ thao tác thủ công khi làm việc với các bảng dữ liệu lớn hoặc báo cáo xuất từ phần mềm kế toán, ERP, CRM…