The following code works but runs too slowly on large files, so the code needs to be modified to identify the first year that is earlier than 2019 and then delete that row and the row containing the rest of the years below that, all at one time:
Range("B2").Select
Do Until ActiveCell.Value =""
If ActiveCell.Value < 2019 Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1,0).Select
End If
Loop
Code Problem: data sets can have 1000’s of rows so checking every cell is very slow. Since the data is always in order, all I need to do is find the first entry <2019 and then select xldown
and delete everything, but I don’t know how to find that cell and make it the active cell.
as stated in the comments:
Dim firstrow As Variant
firstrow = Application.Match(2018, ActiveSheet.Range("B:B"), -1)
If Not IsError(firstrow) Then
Dim lastrow As Long
lastrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row
ActiveSheet.Rows(firstrow + 1 & ":" & lastrow).Delete
End If
Tags: excelexcel, vba