Wie kann man eine Exceltabelle automatisch sortieren?
Hallo zusammen
Ich habe eine Exceltabelle erstellt mit zwei Blättern. In dem einen Blatt trage ich die Resultate eines Turniers ein, im anderen die Tabelle.
Nun konnte ich die Tabelle sortieren, dass ist ja keine Kunst. Ich sortiere die Tabelle nach Punkte, Tore etc. Nun, das Problem ist, dass wenn ich im anderen Blatt ein Resultat ändere, die Tabelle nicht automatisch neusortiert. Also der erste bleibt erster, auch wenn ein anderes Team mehr Punkte holt. Ich müsste dann immerwieder neu sortieren, damit ich die Tabelle aktuell halten kann.
Ich habe gelesen, dass es mit Makros möglich ist, konnte jedoch den Code nicht richtig abändern.
Es betriffrt die Zeilen A20:F24 und A28:F32
Vielen Dank für eure Hilfe.
3 Antworten
Hallo,
ja, ein Makro wäre der richtige weg dazu. Da du offenbar bereits ein Makro gefunden hast, es aber nicht an deine Situation angepasst bekommst, solltest du uns zumindest den Code des schon vorhandenen Makro zur Verfügung stellen. Dann muss hier keiner ein komplett neues schreiben.
LG, Chris
Hallo,
leider ist mir jetzt noch nicht ganz klar, wo hier das Problem liegt, den Code umzuschreiben. Ich bin selbst nicht besonders gut im VBA, aber hier sind doch nur Bereiche anzupassen und halt nochmal das gleiche für einen 2. Bereich zu machen, oder übersehe ich da was?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A20:A24")) Is Nothing Then
Range("A20:F24").Select
Selection.Sort Key1:=Range("A20"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Range("A20").Select
ElseIf Not Application.Intersect(Target, Range("A28:A32")) Is Nothing Then
Range("A28:F32").Select
Selection.Sort Key1:=Range("A28"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Range("A28").Select
End If
End Sub
Du könntest über den Autofilter sortieren. Nach Eingabe eines neuen Punktewerts drückst du dann Strg + Alt + l, um die Liste zu aktualisieren.
Start → Bearbeiten → Sortieren und Filtern → Benutzerdefiniertes Sortieren...
Achte darauf, dass sich die aktive Zelle im Filterbereich befindet.
Ohne Makro, nur mit Formeln geht's auch (wenn die Tabelle nicht zu riesig ist):
In der Tabelle mit den Ergebnissen in einer zusätzlichen Spalte, ganz vorn als 1. Spalte (Kann auch ausgeblendet werden) per Formel den "Rang" ermitteln.
In der Tabelle, die sich automatisch sortieren soll, in der 1. Spalte: 1, 2, 3, 4,.. eingeben und alle weiteren Spalten per sverweis-Formel automatisch füllen lassen in Abhängigkeit vom Rang in der Ergebnis-Tabelle.
Die sverweis-Formel sucht jeweils in der Eingabetabelle die Zeile mit dem entspr. Rang und übernimmt die Daten aus dieser Zeile.
Private Sub Worksheet_Change(ByVal Target As Range)
'Beschränken der Makroausführung auf den Bereich A1 bis A100
If Not Application.Intersect(Target, Range("A1:A100")) Is Nothing Then
'Bereich, auf den sich die Sortierung auswirken soll
Range("A1:E100").Select
'Sortierkriterien
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
'Zelle A1 auswählen
Range("A1").Select
End If
End Sub