ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Macro to delete rows based on date (https://www.excelbanter.com/excel-discussion-misc-queries/221394-macro-delete-rows-based-date.html)

PMBO

Macro to delete rows based on date
 
I have a spreadsheet with completion dates in column C. I want my macro to
look at each date, check to see if it's older than 30 days, and then delete
the rows that are older than 30 days. I have a macro that seems to work, but
I can't get it to loop (and I tried many times to make that happen). I'm
missing the loop piece, but also want to make sure I've put the "formula"
part in properly. Here's my macro:

Public Sub Delete1()
Range("c3").Select
If ActiveCell.Value <= "TODAY()-30" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub

Thanks,
PMO

Mike H

Macro to delete rows based on date
 
Maybe

Public Sub Delete1()
lastrow = Cells(Cells.Rows.Count, "C").End(xlUp).Row
For x = lastrow To 3 Step -1
If Cells(x, 3).Value <= Date - 30 Then
Cells(x, 3).EntireRow.Delete
End If
Next
End Sub

Mike

"PMBO" wrote:

I have a spreadsheet with completion dates in column C. I want my macro to
look at each date, check to see if it's older than 30 days, and then delete
the rows that are older than 30 days. I have a macro that seems to work, but
I can't get it to loop (and I tried many times to make that happen). I'm
missing the loop piece, but also want to make sure I've put the "formula"
part in properly. Here's my macro:

Public Sub Delete1()
Range("c3").Select
If ActiveCell.Value <= "TODAY()-30" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub

Thanks,
PMO


PMBO

Macro to delete rows based on date
 
PERFECT! No wonder you're gold level. Thank You.

"PMBO" wrote:

I have a spreadsheet with completion dates in column C. I want my macro to
look at each date, check to see if it's older than 30 days, and then delete
the rows that are older than 30 days. I have a macro that seems to work, but
I can't get it to loop (and I tried many times to make that happen). I'm
missing the loop piece, but also want to make sure I've put the "formula"
part in properly. Here's my macro:

Public Sub Delete1()
Range("c3").Select
If ActiveCell.Value <= "TODAY()-30" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub

Thanks,
PMO


Mike H

Macro to delete rows based on date
 
Your welcome, glad I could help

"PMBO" wrote:

PERFECT! No wonder you're gold level. Thank You.

"PMBO" wrote:

I have a spreadsheet with completion dates in column C. I want my macro to
look at each date, check to see if it's older than 30 days, and then delete
the rows that are older than 30 days. I have a macro that seems to work, but
I can't get it to loop (and I tried many times to make that happen). I'm
missing the loop piece, but also want to make sure I've put the "formula"
part in properly. Here's my macro:

Public Sub Delete1()
Range("c3").Select
If ActiveCell.Value <= "TODAY()-30" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub

Thanks,
PMO


Don Guillett

Macro to delete rows based on date
 
You may like this to do all without a loop. I have used line continuation _
to prevent word wrap

Sub filterdates()
lr = Cells(Rows.Count, "a").End(xlUp).Row
Range("c1:c" & lr).AutoFilter Field:=1, _
Criteria1:="<" & Date - 30
Range("c2:c" & lr) _
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("c1:c" & lr).AutoFilter
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"PMBO" wrote in message
...
I have a spreadsheet with completion dates in column C. I want my macro to
look at each date, check to see if it's older than 30 days, and then
delete
the rows that are older than 30 days. I have a macro that seems to work,
but
I can't get it to loop (and I tried many times to make that happen). I'm
missing the loop piece, but also want to make sure I've put the "formula"
part in properly. Here's my macro:

Public Sub Delete1()
Range("c3").Select
If ActiveCell.Value <= "TODAY()-30" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub

Thanks,
PMO




All times are GMT +1. The time now is 03:14 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com