Hallo,
gibt es eine Möglichkeit, Tabellen in Excel automatisch - nach vorgegebenen Kriterien - sortieren zu lassen, ohne jedesmal den Befehl „Sortieren“ aufrufen und die Sortierattribute (absteigend, ohne Überschrift etc.) jedesmal per Hand eingeben zu müssen?
Danke im voraus,
Raulito
Hallo Raul
Hier ein Beispielmakro zum Sortieren:
Sub Sortieren()
’
Cells.Select
Selection.Sort Key1:=Range(„A2“), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Ggf. anpassen.
Sub Sortieren()
’
’ Sortieren Makro
’ Makro am 21.11.2001 von Ullrich Sander aufgezeichnet
’
’
Cells.Select
Selection.Sort Key1:=Range(„A2“), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
iel Erfolg
Ullrich Sander
Hallo Ullrich,
danke für Deine Hilfe. Ja, mit einem Makro funktioniert das aber ein Makro muß ich jedesmal selbst aktivieren, damit es abläuft. Gibt es nicht eine Möglichkeit, Excel dazu zu bringen, daß es automatisch neu sortiert, sobald eine neue Eingabe in der Tabelle erfolgt? Oder ist das zuviel von Excel verlangt?
Vielen Dank nochmal und schöne Grüße,
Raúl
danke für Deine Hilfe. Ja, mit einem Makro funktioniert das
aber ein Makro muß ich jedesmal selbst aktivieren, damit es
abläuft. Gibt es nicht eine Möglichkeit, Excel dazu zu
bringen, daß es automatisch neu sortiert, sobald eine neue
Eingabe in der Tabelle erfolgt? Oder ist das zuviel von Excel
verlangt?
Hola Raúl,
mit Alt+F11 in den VB-editor wechseln.
Doppelt auf „Diese Arbeitsmappe“ klicken und folgendes eingeben:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Hier deinen Makrocode einfügen
End Sub
Gruß
reinhard
1 „Gefällt mir“
Rückfrage
Hallo Reinhard,
danke für den Tipp. In dem Tabellenblatt, wo ich den Code nach Deinem Vorschlag eingebe, funktioniert es wunderbar. Allerdings scheint Excel in den anderen Tabellenblättern meiner Datei einen ähnlichen Befehl ausführen zu wollen, sobald ich dort eine Eingabe mache. Jedenfalls verschiebt Excel mir großflächig Zeilen in andere Bereiche, sobald ich in diesen anderen Tabellenblättern eine Eingabe mache, obwohl mit dieser Eingabe nichts weiter geschehen soll. Kann man den von Dir vorgeschlagenen Code nicht so anlegen, daß er nur in diesem einzelnen Tabellenblatt Gültigkeit hat?
Vielen Dank nochmal,
Raúl
danke für den Tipp. In dem Tabellenblatt, wo ich den Code nach
Deinem Vorschlag eingebe, funktioniert es wunderbar.
Kann man den von
Dir vorgeschlagenen Code nicht so anlegen, daß er nur in
diesem einzelnen Tabellenblatt Gültigkeit hat?
Hallo Raúl,
kein Problem,
mit Alt+F11 in den VB-editor wechseln.
Doppelt auf „Tabelle1“ klicken und folgendes eingeben:
Private Sub Worksheet_Change(ByVal Target As Range)
Msgbox Target.Value 'bzw dein MakroCode
End Sub
Gruß
Reinhard
1 „Gefällt mir“
super aber trotzdem schade
Hallo Reinhard,
Deine Tipps sind wirklich klasse, danke. Hat gut funktioniert aber habe hinterher gesehen, daß ich den Code leider nicht in meiner Tabelle verwenden kann.
Solange ich die Werte direkt in die Tabelle eingebe, sortiert Excel automatisch neu. Das Problem ist nur, in meiner Datei mache ich nur wenige Eingaben per Hand. Die Datei besteht zum Großteil aus Formeln und Bezügen. Wenn ich also die Werte in die Tabellen nicht per Hand eingebe sondern mich auf den Wert in anderen Zellen beziehe, springt Excel nicht auf den Code, den Du mir vorgeschlagen hast, an. Kurz gesagt, die Tabelle wird nicht neu sortiert, wenn es sich um bloße Bezugswerte handelt.
Habe durch Probieren festgestellt, daß dieser Code erst aktiv wird, wenn man in dem Tabellenblatt irgendeine Eingabe mit „Enter“ bestätigt. Dann werden auch die Bezugswerte neu sortiert.
Ich möchte Deine Hilfe nicht überstrapazieren aber hättest Du vielleicht noch eine Idee?
Herzlichen Dank,
Raúl
Solange ich die Werte direkt in die Tabelle eingebe, sortiert
Excel automatisch neu. Das Problem ist nur, in meiner Datei
mache ich nur wenige Eingaben per Hand. Die Datei besteht zum
Großteil aus Formeln und Bezügen. Wenn ich also die Werte in
die Tabellen nicht per Hand eingebe sondern mich auf den Wert
in anderen Zellen beziehe, springt Excel nicht auf den Code,
den Du mir vorgeschlagen hast, an. Kurz gesagt, die Tabelle
wird nicht neu sortiert, wenn es sich um bloße Bezugswerte
handelt.
Habe durch Probieren festgestellt, daß dieser Code erst aktiv
wird, wenn man in dem Tabellenblatt irgendeine Eingabe mit
„Enter“ bestätigt. Dann werden auch die Bezugswerte neu
sortiert.
Hi Raul,
irgendwo kommen ja die neuen Werte. Da du nichts in der tabelle1 eingibst per Enter, kommen sie wohl aus anderen Tabellenblättern?
Beispiel in Tabelle1!A1 steht =Tabelle2!A1
in Tabelle1!B1 steht =Länge(A1)
Wenn du nun in Tabelle2!A1 einen anderen Wert eingibst, springt folgendes an:
Private Sub Worksheet_Calculate()
MsgBox „änderung“
End Sub
Vielleicht musst du ja noch andere Ereignisse als Change, Calculate
auswerten, dann klick doch mal gleich über dem Code auf Calcuate oder wasda grad steht, dann siehst du welche Ereignisse du noch auswerten kannst, vielleicht ist SelectionCahnge für dich am geeignesten, oder alle genannten gleichzeig.
also:
Private Sub Worksheet_Calculate()
MsgBox „änderung“
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
’ Code
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'code
End Sub
Gruß
Reinhard