2017-03-17 3 views

Antwort

0
sub deldat() 
dim ws as worksheet 
dim lrow as variant 
dim lcol as variant 
dim dt as variant 
dim n as variant 

n=7 'assuming 7days to delete records 

set ws=thisworkbook.sheets(1) 
lrow=ws.range("A1:A" & rows.count).end(xlup).row 'Getting Last Row 
lcol=ws.Cells(1, .Columns.Count).End(xlToLeft).Column 'Getting Last column 
set dt=date() 'getting current date 

for i=1 to lrow 
cell=ws.cells(i,1) 'Assuming date values in column 1 Or A 
if datediff("d",dt,cell.value) > n then 
ws.row(i).entirerow.delete 
end if 
next i 
end sub 

Ich bin mir nicht sicher über den Code. Ich habe es nicht getestet. Versuchen Sie den Code und zurück mit den Unzulänglichkeiten oder Fehler in diesem Code

1

Es gibt zwei Möglichkeiten, dies zu tun:

  1. Mit Formel. Ziehen Sie einfach die 2 Daten ab (Beispiel Screenshot unten) und filtern Sie dann die Spalte "Differenz" basierend auf Ihren Anforderungen und löschen Sie die unerwünschten Daten. Date Difference using Excel Formula

    . 2.Andere ist die Verwendung von VBA, die viel dynamischer sein wird.

    Sub Delete_Rows_based_on_Date() 
    
    Dim iRow As Integer, iCol As Integer, iNum As Integer 
    Dim iLoopR As Integer, iLoopC As Integer 
    'Benchmark Days 
    iNum = 7 
    
    iRow = Range("A1:A" & Rows.Count).End(xlUp).Row 
    iCol = Cells(1, Columns.Count).End(xlToLeft).Column 
    
    
    For iLoopR = 1 To iRow 'Assuming data starts from Row #1 
        For iLoopC = 1 To iCol 'Assuming data starts from Col #1 (A) 
         If IsDate(Cells(iLoopR, iLoopC)) Then ' Check if the cells contains a Date Value 
          If DateDiff("d", Now(), Cells(iLoopR, iLoopC)) > iNum Then 
           Cells(iLoopR, iLoopC).EntireRow.Delete 
          End If 
         End If 
        Next iLoopC 
    Next iLoopR 
    End Sub 
    
+0

ein Grund für die Antwort nicht akzeptieren ?? – jainashish

Verwandte Themen