There are many methods of solving this problem. You should choose a column that should be filled in all of the time. If you think column A will have an error rate of one blank cell per year and if you expect 100 invoices per day, then starting from the top and going down is guaranteed to fail once a year. Starting from the bottom and going up still might fail once every 100 years, on the day that the error cells happens to be the last cell in the worksheet. If you believe there will always be a diagonal path to the last cell, you could use: FinalRow = Cells(1, 1).CurrentRegion.Rows.Count If you are sure that there are not any notes or stray activated cells below the data set, you might try: FinalRow = Cells(1, 1).SpecialCells(xlLastCell).Row To be absolutely certain, you could loop through all of the columns. If you are expecting 7 columns of data, use this: FinalRow = 0 For i = 1 to 7 ThisFinal = Cells(Rows.Count, i).End(xlUp).Row If ThisFinal > FinalRow then FinalRow = ThisFinal Next i