Zeilen mit Datum vorletztes Quartal löschen
Hallo Leute,
wer kann helfen?
Die Spalte C einer Tabelle ist die Datumsspalte. Gibt es eine Möglichkeit ,alle Zeilen die ein Datum aus dem vorletzten Quartal enthalten automatisch zu löschen. Also im 2. Quartal 2008 alle Daten des 4. Quartals 2007 usw.
Wenn alle Zeilen mit dem Datum des vorletzten Quartals gelöscht sind, müssen noch die Zeilen 4 bis 9 der Tabelle gelöscht und ab Zeile 280 6 Zeilen eingefügt werden.
Gruß
Roland
Antwort schreiben
Antwort 1 von Saarbauer vom 11.04.2020, 19:26 Options
Hallo,
ist machbar, aber es fehlen noch ein paar Angaben.
1. ab welcher Zeile steht in Spalte C ein Datum
2. stehen nach Zeile 280 noch weitere Daten
Gruß
Helmut
Antwort 2 von RPFL57 vom 11.04.2020, 19:34 Options
Hallo Helmut,
ab Zeile 3 steht ein Datum und nach der Zeile 280 kommen weitere Daten.
Vielleicht noch eine Zusazfrage:
Die zu löschenden sechs Zeilen enthalten Verknüpfungen zu anderen Tabellen. Ist es möglich die Verküpfungen in die neuen Zeilen zu übernehmen?
Schon mal Danke, dass Du dich mit meinen Excel Problemen beschäftigst.
Gruß
Roland
Antwort 3 von Saarbauer vom 11.04.2020, 19:51 Options
Hallo,
du willst im Prinzip die Zeilen 4 - 9 vor die Zeile 280 verschieben oder versteh ich das falsch? Warum sollen die vor die Zeile 280 verschoben werden ? ist mir, nicht klar, aber ich kenne auch nicht deine Tabelle.
Wieviel zeilen sind den zu löschen? Eine immer feste Anzahl oder sind es unterschiedlich viele?
Gruß
Helmut
Antwort 4 von RPFL57 vom 11.04.2020, 20:32 Options
Hallo Helmut,
es werden immer 6 zeilen für die Berechnung von Werten aus anderen Tabellen benötigt. In den Zeilen 4 bis 9 stehen die ältesten Daten. Diese "alten Daten" sollen durch neue ersetzt werden und zwar ab der zeile 281.
Dieser Vorgang wiederholt sich bei jeder Neuberechnung. Die ersten sechs Zeilen (4 bis 9) werden gelöscht und durch die neuen Werte (ab Zeile 281) ersetzt.
Gruß
Roland
Antwort 5 von Saarbauer vom 11.04.2020, 21:18 Options
Hallo,
ich hoffe es richtig verstanden zu haben, daher in einer Probedatei erst mal testen
Sub Löschen_quartal()
Rows("281:287").Copy
Range("A4").Select
ActiveSheet.Paste
Rows("281:287").Delete
End Sub
Gruß
Helmut
Antwort 6 von RPFL57 vom 11.04.2020, 21:54 Options
Hallo Helmut,
das Makro funktioniert so, wie ich es benötige. Ich musste nur die Funktionweise genau umkehren.
Sub Löschen_quartal()
Rows("4:9").Copy
Range("a281").Select
ActiveSheet.Paste
Rows("4:9").Delete
End Sub
Bedeutet "ActiveSheet.Paste" soviel wie Zwischenablage einfügen?
Gruß
Roland
Antwort 7 von Saarbauer vom 12.04.2020, 15:30 Options
Hallo,
"Paste" ist der Kopierbefehl.
Etwas ist mir nicht ganz klar, wenn du immer die Zeilen (4:9) löschst, rutschen Zeilen von unten nach.
Wenn du nun bei Zeile 280 und folgende die Werte hinkopierst, landen diese irgendwann wieder ganz vorne und dies ist zumindest für mich nicht logisch.
Gruß
Helmut
Antwort 8 von RPFL57 vom 12.04.2020, 19:38 Options
Hallo Helmut,
das ist schon logisch. Alle Zeilen - bis auf einige Leerzeilen enthalten Verknüpfungen zu anderen Tabellen. Aus diesen Tabellen werden Daten kopiert und in der Tabelle verarbeitet. D. h. in den Zeilen 4 bis 9 stehen immer die ältesten Werte, die gelöscht werden müssen. Die aktuellen Werte müssen dann unten (ab Zeile 281) eingefügt werden. Ich kann leider keine Beispieldatei versenden, sonst wäre es einfacher.
Ich versuche nochmal an einem Beispiel:
Die Tabelle enthält Daten von mehreren Quartalen. Am 1.4.2008 werden die Daten des 1. Quartals 2008 aus mehreren anderen Tabellen kopiert und weiterverarbeitet. Daten 1. Quartal 1998 (Zeile 4-9) müssen gelöscht werden.
Ich habe das bis jetzt manuell wie folgt gemacht
1. Zeilen 4 bis 9 löschen
2. Ab Zeile 281 6 neue Zeilen einfügen
3. Verknüpfungen der Zellen A281, C281, E281, F281, H281 bis A286 ... zu anderen Tabellen erstellen.
Gruß
Roland
Antwort 9 von Saarbauer vom 12.04.2020, 21:22 Options
Hallo,
ich gehe davon aus, dass du schon weisst was du machst, aber es war für mich etwas unlogisch, daher mein Hinweis.
Trotzdem eine schönen Abend
Gruß
Helmut
Antwort 10 von RPFL57 vom 12.04.2020, 23:35 Options
Hallo Helmut,
könntest Du dir bitte nochmal meine ursprüngliche Frage anschauen?
Vielleicht weißt Du ja auch dazu eine Lösung.
Gibt es eine Möglichkeit, alle Zeilen die ein Datum aus dem vorletzten Quartal enthalten automatisch zu löschen. Also im 2. Quartal 2008 alle Daten des 4. Quartals 2007 usw. Datumssplate ist die Spalte C. Das erste Datum steht in Zeile 3.
Gruß
Roland
Antwort 11 von Saarbauer vom 14.04.2020, 20:19 Options
Hallo,
versuch es mal hiermit
Sub LöschennQuartal()
Dim Datum As Date
Datum = InputBox("Geben Sie ein, bis zu welchem Datum die Daten gelöscht werden sollen", "Löschen von alten Daten", DateSerial(Year(Date), (Int(Month(Date) / 3) + 1) * 3 - 5, 1))
Range("F2").Select
While IsEmpty(ActiveCell) = False
If ActiveCell.Value < Datum Then
Rows(ActiveCell.Row()).Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub
Es wäre auch eine Lösung mit For ... denkbar
Gruß
Helmut
Antwort 12 von RPFL57 vom 15.04.2020, 20:40 Options
Hallo Helmut,
vielen Dank für Deine Hilfe, so habe ich mir das vorgestellt.
Gruß
Roland
Antwort 13 von Saarbauer vom 15.04.2020, 21:56 Options
Hallo,
ist dir wahrscheinlich aufgefallen, aber der Ordnung halber
Range("F2").Select
muss natürlich
Range("C3").Select
sein
Gruß
Helmut
Antwort 14 von RPFL57 vom 15.04.2020, 22:27 Options
Hallo Helmut,
ist mir aufgefallen. Trotzdem danke für die Info.
Gruß
Roland