Gene đang tìm cách xóa nhanh dữ liệu khỏi trang tính dựa trên ngày tháng trong một cột cụ thể. Nếu ngày cũ hơn hôm nay (ngày đã qua) thì hàng đó sẽ bị xóa.

Điều này có thể được thực hiện khá dễ dàng với macro. Tất cả những gì bạn cần làm là thực hiện bước macro thông qua dữ liệu và so sánh ngày trong mỗi hàng với ngày hôm nay. Nếu ngày nhỏ hơn ngày hôm nay, thì phương thức Xóa được sử dụng trên đối tượng EntireRow.

Sub DeleteRows1()

Dim x As Long     Dim iCol As Integer

iCol = 7 'Filter all on Col G

For x = Cells(Cells.Rows.Count, iCol).End(xlUp).Row To 2 Step -1         If Cells(x, iCol).Value < Date Then             Cells(x, iCol).EntireRow.Delete         End If     Next End Sub

Trong ví dụ này, macro kiểm tra cột G (trong biến iCol) để tìm ngày. Nếu ngày của bạn nằm trong một cột khác, thì bạn nên thực hiện thay đổi đối với biến. Tùy thuộc vào số lượng hàng dữ liệu trong trang tính của bạn, macro cũng có thể mất khá nhiều thời gian để chạy.

Nếu bạn nhận thấy sự chậm trễ trong hiệu suất, thì bạn có thể muốn sử dụng một cách tiếp cận khác. Ví dụ sau sử dụng khả năng Tự động lọc của Excel để lọc dữ liệu trước tiên để chỉ hiển thị dữ liệu cũ, sau đó xóa các hàng đó.

Sub DeleteRows2()

Dim Dates As Range     Dim nRows As Double     Dim currDate As Variant

'Format dates as text     Range("Dates").NumberFormat = "@"

'Today's date in number format     currDate = CDbl(Date)

Range("Dates").AutoFilter Field:=1, _       Criteria1:="<" & currDate     nRows = Range("Dates").Rows.Count     Rows("2:" & nRows).Select     Selection.Delete Shift:=xlUp     Range("Dates").AutoFilter     Range("Dates").NumberFormat = "m/d/yyyy"

Range("C2").Select End Sub

Macro này giả định rằng bạn đã thực hiện bước gán tên cho phạm vi dữ liệu của mình. Chọn tất cả các ô trong bảng dữ liệu của bạn — bao gồm bất kỳ hàng tiêu đề nào — và đặt tên cho nó là “Ngày”. Khi bạn chạy macro, nó sử dụng phạm vi này làm mục tiêu cho Bộ lọc tự động.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (10783) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: