online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Petra65 vom 17.05.2019, 09:45 Options

Lösung

automatisches Sortieren

Hallo,

ich möchte eine Tabelle (4 Seiten) automatisch nach dem Datum sortieren lassen. Ich weiss, dass ich dazu wohl ein Makro brauche - komme nur mal wieder nicht auf die Lösung!

Die zu sortierenden Daten befinden sich in den Bereichen:

Spalten: A bis L
Zeilen: 5 bis 65
72 bis 131
138 bis 197
204 bis 263

Es müssen allerdings die Seitenumbrüche berücksichtigt werden, d. h. wenn ich auf Seite 2 ein Datum eingebe, dass eigentlich in Seite 1 gehört, so muss die letze Zeile von Seite 1 auf Seite 2 rutschen.

Ist sowas möglich???

Was passiert eigentlich mit Formeln, die nun hinterlegt sind - die haben dann doch wohl weiterhin Gültigkeit, oder?


Hoffe auf Hilfe ...

Gruss
Petra


Antwort schreiben

Antwort 1 von Hajo_Zi vom 17.05.2019, 09:52 Options

Hallo Petra,

beim lesen Deines Beitrages ist mir audfgefallen. Durch die Leezeilen sind es 4 unterschiedliche Tabellen die automatisch sortiert werden sollen. Ich vermute mal Du kanst jede Tabelle einzel srtieren, abe diese Forderung:

"wenn ich auf Seite 2 ein Datum eingebe, dass eigentlich in Seite 1 gehört, so muss die letze Zeile von Seite 1 auf Seite 2 rutschen."

Ist mir absolut nicht klar. Ich würde daraus lesen das ein Datensatz von der 2 Tabelle in die erste einsortiert werden soll?

Gruß Hajo

Antwort 2 von Petra65 vom 17.05.2019, 10:16 Options

Zitat:
Ich würde daraus lesen das ein Datensatz von der 2 Tabelle in die erste einsortiert werden soll?


.. ja genau so.


Zitat:
Durch die Leezeilen sind es 4 unterschiedliche Tabellen die automatisch sortiert werden sollen


Naja, es sind keine Leerzeilen, aber dort befinden sich die Spaltenüberschriften.

Antwort 3 von Hajo_Zi vom 17.05.2019, 20:22 Options

Halllo Petra,

warum sind dort die Spaltenüberschrifften? Hat jede Tabelle eine andere? Vielleicht solltest Du mal Dein Konzept überdenken?
In Excel gibt es auch Wiederholungszeilen.

Gruß Hajo

Antwort 4 von Petra65 vom 18.05.2019, 05:57 Options

Hallo Hajo,

ohh - das wäre auch eine Möglichkeit! Danke für den Hinweis.

Dann geht der Bereich von:

Spalten: A - L
Zeilen: 5 bis 251

Gruss
Petra

Antwort 5 von Hajo_Zi vom 18.05.2019, 07:52 Options

Hallo Petra,

vielleicht hilft Dir dann dieses Beispiel von meine Homepage
Link zur Datei

Gruß Hajo

Antwort 6 von Petra65 vom 18.05.2019, 18:43 Options

Hallo,

aber wo finde ich das Makro???


Gruss
Petra

Antwort 7 von Hajo_Zi vom 18.05.2019, 19:07 Options

Hallo Petra,

das Makro ist in keine Modul sondern unter der Tabelle.

Gruß Hajo

Antwort 8 von Petra65 vom 18.05.2019, 19:18 Options

Hajo,

was heißt denn "unter der Tabelle"?

Meinst Du damit die Datei "automatisch_sortieren.xlsm"?

Aber die müßte ich doch öffnen und meinen Anforderungen anpassen - oder nicht? Und irgendwie muss die doch auch eingebunden werden?

Ziemlich ratlos .... ;-)


Gruss
Petra

Antwort 9 von Hajo_Zi vom 18.05.2019, 19:27 Options

Hallo Petra,

gehe auf das Register, das für Dich am besten passt, rechte Maustaste, Code anzeigen.

Die Datei XLSM ist das Beispiel für 2007.

Gruß Hajo

Antwort 10 von Petra65 vom 18.05.2019, 19:44 Options

Ahaaa .... vielen Dank.

Werde mich morgen dann mal dran setzen (bei meinem "Glück" muss ich mich bestimmt nochmal melden)


Gruss

Petra

Antwort 11 von Petra65 vom 19.05.2019, 13:55 Options

Hallo,

ich wußte doch, dass ich "Glück" habe ... ;-)

Ich habe nun den Code, er sortiert auch - aber leider nicht wie gewünscht!!

Es soll also der Bereich B6:K252 sortiert werden, und zwar nach B6 (dort wird das Datum eingetragen). Habe ich nun in den ersten drei Zeilen das Datum 1.1. und trage in der nächsten Zeile 2.1. ein, so wirft er mir die Zeile auf die zweite Stelle. Vermutlich anhand des Codes richtig - aber was muss ich ändern??? Außerdem möchte ich erst die komplette Zeile ausfüllen, und nach dem Bestätigen mit ENTER soll sortiert werden - dass müßte doch auch gehen?!

Hier der Code:
Private Sub Worksheet_Change(ByVal Target As Range)
' automatisch sortieren bei Eingabe im Bereich B6:K252
Dim RaZelle As Range
For Each RaZelle In Range(Target.Address)
If RaZelle.Column = 2 Then
ActiveSheet.Range("B6:K252").Sort Key1:=Range("B6"), Order1:=xlDescending, _
Header:=xlYes, MatchCase:=False, Orientation:=xlTopToBottom
Exit For ' Schleife verlasse da schon sortiert
End If
Next RaZelle
End Sub


Weiss jemand wo der/die Fehler sind??

Gruss
Petra

Antwort 12 von Beverly vom 19.05.2019, 20:15 Options

Hi Petra,

es ist sehr schwierig herauszufinden, weshalb ein Code nicht das Ergebnis bringt, was sich ein User erhofft, wenn man den Tabellenaufbau nicht 100%ig kennt. Vielleicht könntest du deine Arbeitsmappe mal hochladen, dann lässt sich das viel besser nachvollziehen. Unter diesem Link zum Upload findest du für 100 Tage kostenlosen Webspace. Die Linkadresse, die du dort nach dem Upload erhältst, kopierst du hier in einen Beitrag.

Bis später,
Karin

Antwort 13 von Petra65 vom 19.05.2019, 21:05 Options

Hallo,

ist eine gute Idee.

Die Datei ist zu finden unter:

http://www.uploadagent.de/files/1179601392/Lw-Kost.xls


Habe inzwischen ein Makro gefunden.
Das eine sortiert mit STRG+A, das andere beim Speichern.

Mich würde allerdings interessieren ob es besser gehen würde!

Achtung: Bei der Tabelle werden die Spalten A und L berechnet!


Gruss
Petra

Antwort 14 von Beverly vom 19.05.2019, 21:49 Options

Hi Petra,

wenn das Makro das macht, was du dir vorgestellt hast, dann ist das doch OK. Du kannst es noch ein wenig vereinfachen, da in VBA zu 99% auf Select verzichtet werden kann. Der Code sollte dann so aussehen

Sub sortierenKosten()
'
' Makro1 Tastenkombination: Strg+a
'
    Range("B6:K246").Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub


Du kannst nochmal in der Hilfe nachschauen, welche Schalter bei Sort Standard sind, die kannst du weglassen. Ich kann es leider nicht prüfen, da bei mir die Hilfe nicht mehr funktioniert. Du kannst es auch selber testen, indem du einen Schalter nach dem anderen weglässt und prüfst, ob das Ergebnis immer noch das richtige ist.

Du musst aber beachten, dass die zu sortierende Tabelle die aktive ist, weil sonst der Code auf einen Fehler hinausläuft. Ich würde dir deshalb empfehlen, in der Tabelle einen CommandButton zu erstellen und diesem dann das Makro zuweisen - dann kann nichts schiefgehen.

Bis später,
Karin

Antwort 15 von Petra65 vom 19.05.2019, 22:01 Options

Vielen Dank ... da muss ich morgen mal die Hilfe durchsuchen.


Gruss
Petra

Antwort 16 von Petra65 vom 20.05.2019, 11:29 Options

Hallo,

ich kriege im Moment die absolute Kriese ... ;-(

Es funktioniert einfach nicht wie gewünscht:

Zitat:
Du musst aber beachten, dass die zu sortierende Tabelle die aktive ist, weil sonst der Code auf einen Fehler hinausläuft. Ich würde dir deshalb empfehlen, in der Tabelle einen CommandButton zu erstellen und diesem dann das Makro zuweisen - dann kann nichts schiefgehen.


Komme auch mit der Hilfe mit CommandButton nicht klar! Habe nun für beide Tabellen (Kosten / Einnahmen) andere Tastenkombinationen festgelegt - dann treten auch keine Fehler auf. Allerdings muss ich zugeben, dass es nicht besonders Bedienerfreundlich ist!!


Zum anderen möchte ich das Ausführen des Makros bei ENTER, doch auch das funktioniert nicht!

Habe in der Arbeitsmappe den Code eingefügt:

Private Sub ENTER_KeyPress(KeyAscii As Integer)
'
'Makro wird bei ENTER ausgeführt
'
If KeyAscii = vbKeyReturn Then
DoCmd.RunMacro "sortierenKosten"
End If
End Sub

Funktioniert aber nicht!! Habe den Code auch bereits im Modul ausprobiert, auch ohne Erfolg!

Darf ich nochmals um Hilfe bitten ..... ??

Gruss
Petra

Antwort 17 von Beverly vom 20.05.2019, 15:20 Options

Hi Petra,

kopiere folgenden Code in das Klassenmodul der Tabellen Kosten und Einnahmen (wenn sie denn beide gleich aufgebaut sind)

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 11 Then Exit Sub
    Range("B6:K246").Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub


Bis später,
Karin

Antwort 18 von Petra65 vom 20.05.2019, 19:30 Options

Hallo Karin,

ist das der CommandButton?

Eine Frage - was bewirkt:

Zitat:
If Target.Column <> 11 Then Exit Sub


Ist es richtig, wenn ich behaupte: "Sobald der neue Spaltenbereich ungleich 11 ist wird das Ereignis beendet"??

Aber warum 11?


Gruss
Petra

Antwort 19 von Beverly vom 20.05.2019, 19:46 Options

Hi Petra,

nein, es ist kein CommandButton, denn du hattest ja geschrieben, dass das Sortieren nach einem ENTER stattfinden soll. Spalte 11 ist K. Wenn also dort ein Wert eingetragen und mit ET abgeschlossen wird, wird der Code ausgelöst, andernfalls wird die Prozedur verlassen und nichts passiert. Ich habe den Code mal in die Arbeitsmappe eingefügt Download.

Bis später,
Karin

Antwort 20 von Petra65 vom 20.05.2019, 20:16 Options

Hi,


Tatsache ... ... "Bis später" ;-)


Funktioniert an sich SUPER ... - aber berücksichtigt leider nicht, dass ich entweder in I oder in J oder in K Werte eintrage.

Ich habe die Änderung versucht mit OR und auch mit ElseIf, doch leider bekomme ich dann Fehlermeldungen!


Es muss eigentlich heißen: Wird I J oder K mit ET abgeschlossen, dann ....

Fällt Dir dazu was ein?


Bis später ;-)

Petra

Ähnliche Themen

Nach Farben sortieren...
RTM80  28.11.2007 - 141 Hits - 7 Antworten

Excel; Sortieren; 2 Zellen in Verbindung setzen
detommy  19.05.2008 - 149 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:Mon Jan 26 01:23:17 2026