1.3k Aufrufe
Gefragt in Tabellenkalkulation von dutchi1972 Mitglied (419 Punkte)
Hallo zusammen,
Ich hab mal wieder mein Projekt weiter entwickelt und wieder hab ich eine kleines Problem,

Ich hab eine Excel-Datei mit mehrer Registerblätter.
per Makro werden Daten in eine Register Blatt(Auftrag), in eine Tabelle eingetragen.

Per Makro möchte ich das die Daten in der Tabelle selbstständig als 1.nach Spalte Kalenderwoche (D) soltiert und anschließend nach einer 2.Spalte Aktionsnr.( E) sortiert werden.
diese Sortierung soll fest sein oder per makro wieder rückgängig gemacht werden.

Kann mir einer weiter helfen.

Danke im voraus.

2 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Namenloser,

also das Sortieren ist nicht so das Problem. Allerdings das Rückgängigmachen. Anders als wenn Du das per Hand machst und dann die Rückgängigfunktion dazu verwenden kannst, geht das nach einem Makrodurchlauf nicht mehr.
Ich habe da mal eine Lösung erarbeitet, die vor dem Sortieren die alten Daten in einer Hilfsspalte durchnummeriert. Über diese Nummerierung kann man dann durch Sortieren dieser Spalte die Sortierung wieder rückgängig machen. Die Hilfsspalte (in meinem Beispiel die Spalte J) wird durch das Makro ausgeblendet, so dass die Durchnummerierung nicht sichtbar ist.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Dim lngLastRow As Long

Sub Sortieren()
With ActiveSheet
'Letzte Zeile in Spalte D ermitteln
lngLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
'Spalte J als Hilfsspalte vorbereiten...
With .Columns("J:J")
'...Spalte ausbelenden
.EntireColumn.Hidden = True
'...alle Einträge in Spalte löschen
.ClearContents
End With
'In Zeile 2 der Hilfsspalte die Zahl eintragen
.Range("J2").FormulaR1C1 = "1"
'In Zeile 3 der Hilfsspalte die Zahl eintragen
.Range("J3").FormulaR1C1 = "2"
'Von Zeile 3 bis zur letzten Zeile über die Auoausfüllen-Funktion die Zeilen durchnummerieren
.Range("J2:J3").AutoFill Destination:=.Range("J2:J" & lngLastRow), Type:=xlFillDefault
'Daten nach Spalte D und Spalte E sortieren
.Range("A1:J" & lngLastRow).Sort Key1:=.Range("D2"), Order1:=xlAscending, Key2:=.Range("E2") _
, Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False _
, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal
End With
End Sub

Sub Sortieren_zurück()
With ActiveSheet
'Letzte Zeile in Spalte D ermitteln
lngLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
'Daten nach Hilfsspalte sortieren
.Range("A1:J" & lngLastRow).Sort Key1:=.Range("J2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'alle Einträge in Hilfsspalte löschen
.Columns("J:J").ClearContents
End With
End Sub
Wenn Du die Durchnummerierung nicht in Spalte "J" haben möchtest, wovon ich mal ausgehe, so musst Du in dem Makro alle Spaltenbezeichnungen "J" gegen die Spaltenbezeichnung, in der Du die Hilfsspalte haben möchtest, ändern.

Ich habe Dir auch mal mein Beispiel hochgeladen. ]http://www.excelbeispiele.de/beispiele_supportnet/Beispiel_Dutchi1972.xls

Ich hoffe, Dir hilft das Beispiel. Eine andere Möglichkeit wäre z.B. das alte Filterergebnis durch ein Makro zunächst in eine Textdatei zu exportieren und beim zurück wieder die Daten aus der Textdatei zu importieren und die sortierten Daten zu überschreiben. Aber obiges macht‘s ja auch erst mal.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup
0 Punkte
Beantwortet von dutchi1972 Mitglied (419 Punkte)
Hallo coros,

Danke für die schnelle Antwort, leider war ich heute auf der Arbeit etwas anders beschäftigt um mich um die Lösung zu kümmern.
Ich hab eben versucht das Macro auf meine Datei einzubinden leider ohne Erfolg. da ich schon einmal eine Laufende nummer am Anfang meiner Tabelle habe brauch ich keine Hilfsspalte.

Ich hab mal einen kleinen Ausschnitt aus meine Tabelle hochgeladen, in der Tabelle sind oben gelbe Zellen nach dieser Reihenfolge sollten die Zeilen sortiert werden , durch ein anderes Makro sollte die Tabelle wieder nach der laufenden Nummer in SPalte b sortiert werden.

Datei enthält noch kein Makros, ist aber schon im xlsm Format abgespeichert.
wäre schön wenn du hier auch eine Lösung für mich hättest.

Gruß Dutchi-Wim

Probe Datei unter folgenden Link runterzu laden:
http://www.file-upload.net/download-2856576/x_STADAT_ALLE-Probe.xlsm.html
...