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!