Gene به دنبال راهی برای حذف سریع داده ها از یک کاربرگ بر اساس تاریخ در یک ستون خاص است. اگر تاریخ قدیمی تر از امروز باشد (تاریخ گذشته است)، ردیف باید حذف شود.
این کار را می توان به راحتی با ماکرو انجام داد. تنها کاری که باید انجام دهید این است که یک مرحله ماکرو را از طریق داده ها انجام دهید و تاریخ هر ردیف را با تاریخ امروز مقایسه کنید. اگر تاریخ کمتر از امروز باشد، از متد Delete در شیء 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
در این مثال، ماکرو ستون G (در متغیر iCol) را برای تاریخ بررسی می کند. اگر تاریخ شما در ستون دیگری است، باید تغییر را در متغیر ایجاد کنید. بسته به تعداد ردیف های داده در کاربرگ شما، اجرای ماکرو نیز ممکن است مدت زیادی طول بکشد.
اگر متوجه تاخیر در عملکرد شدید، ممکن است بخواهید از روش دیگری استفاده کنید. مثال زیر از قابلیت های AutoFilter اکسل استفاده می کند تا ابتدا داده ها را فیلتر کند تا فقط داده های قدیمی را نشان دهد و سپس آن ردیف ها را حذف کند.
Sub DeleteRows2()
Dim Dates As Range
Dim nRows As Double
Dim currDate As Variant
Format dates as text
Range("Dates").NumberFormat = "@"
Todays date in number format
currDate = CDbl(Date)
Range("Dates").AutoFilter Field:=1, _
Criteria1:="
این ماکرو فرض می کند که شما قدمی را برای اختصاص نام به محدوده داده خود برداشته اید. تمام سلول های جدول داده های خود را انتخاب کنید - از جمله هر ردیف عنوان - و نام آن را "Dates" بگذارید. هنگامی که ماکرو را اجرا می کنید، از این محدوده به عنوان هدف فیلتر خودکار استفاده می کند.