Wenn in einem Bereich ein einzelner Zellenwert gefunden wird, löschen Sie die gesamte Zeile

Ich arbeite mit Tagesdaten, die 31 Tage lang Daten für mehrere Stationen aufgezeichnet haben, und ich benötige einen VBA-Code, um Schaltjahrtage zu entfernen. Ich habe eine Liste mit Datumsangaben und eine Liste mit Jahren, die keine Schaltjahre sind und die ich löschen möchte. Um die zusätzlichen 30 und 31 Tage zu löschen, habe ich den folgenden Basiscode verwendet:

Dim lastrow, i As Long

lastrow = ActiveSheet.Cells(65536, 1).End(xlUp).Row

For i = 1 To lastrow
    'delete 31st days for February
    If ActiveSheet.Range("D" & i) = 2 And ActiveSheet.Range("E" & i) = 31 Then
        Rows(i).Select
        Selection.Delete shift:=xlUp
    End If
Next i

Ziemlich einfach und funktioniert gut. Ich hatte gehofft, etwas Ähnliches tun zu können, wenn ich das nicht vorhandene Datum (dh den 29. Februar / Nicht-Schaltjahr) in den Daten finde und die Zeile lösche, aber es hat sich als extrem herausgestellt Es ist schwierig, einen Wert innerhalb eines Bereichs zu finden. Ich dachte in etwa so:

Dim lastrow, i As Long, leapyear as Workbook

Set leapyear = Workbooks("LeapYears.xlsx")

lastrow = ActiveSheet.Cells(65536, 1).End(xlUp).Row

For i = 1 To lastrow
    'obviously this is where I have the problem trying to match a cell to a range
    If ActiveSheet.Range("D" & i) = leapyear.Sheets(1)range("C2:C90") Then
        Rows(i).Select
        Selection.Delete shift:=xlUp
    End If
Next i

Jede Hilfe oder eine andere Möglichkeit, dies zu handhaben, wird sehr geschätzt!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage