online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Dutchi1972 vom 29.09.2022, 23:17 Options

Feste Sortierung nach 2 Spalten in Tabelle

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.


Antwort schreiben

Antwort 1 von coros vom 30.09.2022, 07:02 Options

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_Dutchi19...

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
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup

Antwort 2 von Dutchi1972 vom 30.09.2022, 21:49 Options

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

Ähnliche Themen

Wert aus 2 Spalten Tabelle auslesen
Bananakurti  23.10.2009 - 224 Hits - 9 Antworten

Excel 2003 Textkonvertierung feste Breite
markus1967  27.05.2010 - 136 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026