Excel: Makro zum Archivieren (Kopieren & Einfügen)

Hallo,

ich hab ein Problem mit Excel:
eine Excel-Datei mit zwei Tabellenblätter „ToDo“ und „Archiv“, was meine ToDo Liste verwaltet. In der ToDo Liste stehen die Einträge zeilenweise und jeweils nach Monat sortiert wie folgt:

mission deadline status kommentar

oktober
blabla bla in arbeit blabla
blabla bla fast erl. blabla

november
blabla bla blablabl blabla

Wenn eine Aufgabe erledigt ist, wird die entsprechende Zeile aus ToDo ausgeschnitten und in Archiv unter dem entsprechenden Monats eingefügt (Zeile für Monat muss neu erstellt werden falls noch nicht vorhanden).

Wie kann ich das am besten „makromatisieren“?

Hier meine überlegungen:
Die gewünschte Zeile auf ToDo ist bereits markiert. Das Makro unten kopiert immer in die gleiche Zeile in Archiv hinein.

Sub archivieren()
Selection.Cut
Sheets(„Archiv“).Select
Range(„A7“).Select
ActiveSheet.Paste
Sheets(„To do“).Select
Rows(„7:7“).Select
Selection.Delete Shift:=xlUp
End Sub

Ich müsste in ToDo schauen, unter welchem Monat der Eintrag steht, diesen ausschneiden, in Archiv gehen und unter dem gleichen Monat den Eintrag in eine neue leere Zeile einfügen. Könnt ihr mit helfen?

Danke!

Hallo Elfarid

eine Excel-Datei mit zwei Tabellenblätter „ToDo“ und „Archiv“,
was meine ToDo Liste verwaltet. In der ToDo Liste stehen die
Einträge zeilenweise und jeweils nach Monat sortiert wie

Steht das alles in EINER Spalte untereinander? Ich würde eher vorschlagen, mehrere (z.B. 3) Spalten zu belegen für Monat/Projekt/Stand.
Was meinst du dazu? Das Makro schaut in der A-Spalte einfach den Monat nach und überträgt den Text. Es ist immer gut, solche Daten zu trennen, da man dann viel besser damit operieren kann.

Sub archivieren()
Selection.Cut
Sheets(„Archiv“).Select
Range(„A7“).Select
ActiveSheet.Paste
Sheets(„To do“).Select
Rows(„7:7“).Select
Selection.Delete Shift:=xlUp
End Sub

Dein Makro-Ansatz ist im Prinzip richtig, jedoch viel zu schwerfällig; solche Makros entstehen oft, wenn man den Makro-Recorder anwendet. Es ist nicht nötig, immer wieder select/paste etc. zu machen, man kann die Einträge lesen und schreiben ohne den Cursor zu bewegen: Ist schneller und eleganter = professioneller.
Bitte um deine Meinung; ich werde dir dann ein Makro vorschlagen.
Interessiert?
Gruss
Erich

Hallo Erich,

danke für die Antwort.
Die Daten stehen in vier Spalten (mission, deadline, status und kommentar), so dass eine Zeile einem ToDo Eintrag entspricht.
Ich selektiere eine Zeile; diese erstmal ausschneiden; dann muss ich überprüfen, zu welchem Monat dieser Eintrag gehört: also die Zeilen hinaufsteigen, bis die Zeile mit der Monatsbezeichnung kommt (diese Zeile hat colspan=4); jetzt ins Blatt Archiv wechseln, Monat suchen, neue Zeile mit dem ausgeschnittenen Inhalt einfügen. In Java könnt man das mit einem einmaligen Einlesen der (ASCII-)Datei. Mit Excel Makros kenn ich mich aber (noch) nicht so gut aus (desswegen auch der Recorder).

Gruß
elfarid

Hallo Elfarid
Nach erfolgreicher Schnee-Schaufel-Anstrengung muss ich nochmal rückfragen:

Die Daten stehen in vier Spalten (mission, deadline, status
und kommentar), so dass eine Zeile einem ToDo Eintrag
entspricht.

Das finde ich gut

muss ich überprüfen, zu welchem Monat dieser Eintrag gehört:
also die Zeilen hinaufsteigen, bis die Zeile mit der
Monatsbezeichnung kommt (diese Zeile hat colspan=4)

Colspan, das gibt es in Excel nicht, wir sind hier nicht im Java-Land!
Ich schlage vor, für den Monat eine Kolonne einzufügen, z.B. „A“ und dann B:mission C:deadline D:status und kommentar.
Der Monat ist dann nicht irgendwie dazwischengeklemmt, wo er gesucht werden muss.
Der Ablauf ist sonst klar.
Das Makro würde dann einfach in der aktiven Zeile der ToDo-list (gleich welche Spalte) gestartet.
Das Archivblatt bekommt dieselbe Struktur. Frage: wenn ein Eintrag „Januar 2006“ übertragen wird, geht der an erste oder letzte Stelle in Archiv/Januar oder irgendwo dazwischen, z.B. nach deadline oder ABC sortiert?
Auf dieser Basis kann ich dir ein Makro erstellen, brauche aber dazu 2-3 Tage, da nicht jeden Tag Sonntag ist!
Gruss
Erich