Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Sortieren einer Liste per Funktion oder Makro





Frage

Hallo miteinander, ich habe mit Excel eine Fußballtabelle erstellt und möchte diese nun sortieren in der Reihenfolge der erzielten Punkte, anschließend in der Reihenfolge der Tordifferenz. Die Namen der Mannschaften stehen in Spalte A, die Punkte in Spalte B und die Tordifferenz in Spalte C. Ich möchte jedoch nicht über die Sortierfunktion von Excel gehen (Daten>Sortieren), sondern möchte nach jeder Eingabe automatisch eine erneute Sortierung, um jederzeit eine Auswertung zu haben. Gibt es hierzu eine Funktion oder ein brauchbares Makro??? Vielen Dank schon jetzt für Eure Hilfe, Mike

Antwort 1 von JoeKe

Hallo Mike,

kopier folgenden Code in das VBA-Projekt des Tabellenblattes in dem deine Fußballtabelle steht.

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("B1:C18"))
If Target Is Nothing Then Exit Sub
Columns("A:C").Sort Key1:=Range("B1"), Order1:=xlDescending, Key2:=Range("C1") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End Sub


Immer wenn eine Änderung in Spalte B oder Spalte C stattfindet wird die Tabelle neu sortiert.



MfG

JöKe

Antwort 2 von Hase

Hallo JöKe,

vielen Dank für Deine schnelle Antwort. Leider hat die Lösung (zumindest bei mir) nicht funktioniert. Ich habe den Code wie beschrieben im VBA-Editor des entspr. Tabellenblattes eingetragen, aber es erfolgt keine Sortierung. Vielleicht hilft eine ausführlichere Beschreibung meiner Tabelle:

Ich habe die Gruppenspiele der WM eingetragen und per Formel aus den Ergebnissen die erzielten Punkte und die Tordifferenz (bei gleicher Punktzahl) ermitteln lassen. Die Punkte und die Tordifferenz habe ich den einzelnen Mannschaften der jeweiligen Gruppen zugeordnet (Tabelle A-H). Die Tabellen A-H sollen nun in absteigender Reihenfolge zuerst nach den Punkten, dann nach der Tordifferenz geordnet werden, damit feststeht, wer in seiner Gruppe Erster und Zweiter wurde.

Vielen Dank nochmal für die Mühe,
Mike

Antwort 3 von JoeKe

Hallo Mike,

leider versteh ich den Aufbau deiner Tabelle noch nicht ganz.

Aber dennoch ein Versuch.
Folgender Code, der wieder in das VBA-Projekt der Tabelle gehört, sortiert die Spalten A-H erst absteigend nach Spalte B und dann nach Spalte C.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Columns("A:H").Sort Key1:=Range("B1"), Order1:=xlDescending, Key2:=Range("C1") _
, Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End Sub


Der Code wird nun bei jeder Änderung auf dem gesanten Tabellenblatt ausgeführt.
Ich hoffe das kommt dem nahe was du möchtest. Wenn nicht ruhig nochmal melden.

MfG

JöKe

Antwort 4 von Hase

Hallo JöKe,

das läuft nun, aber auf einen Laufzeitfehler hinaus. Mein Arbeitsblatt sieht wie folgt aus:

Tabellenblatt 1 beinhaltet die Gruppenspiele
Tabellenblatt 2 beinhaltet die Finalrunden
Tabellenblätter 3-10 sehen wie folgt aus:
Spalte A: Teilnehmerland
Spalte B: erzielte Punkte
Spalte C: Tordifferenz

Die Blätter 3-10 sollen nun in Reihenfolge der Punkte, danach in Reihenfolge der Tordifferenz sortiert werden, sobald sich dort Werte ändern.

Bisher erscheint der Laufzeitfehler, sobald ich in dem Tabellenblatt (zB. A) nur klicke.

Danke für Deine Gedult,
Mike

Antwort 5 von CaroS

Hallo!

Für Freunde der Formelprogrammierung und des Sports ist hier mal eine wirklich nette Tabelle für die Fußball-WM. Vielleicht nicht ganz fertig und nicht 100-prozentig fehlerfrei, aber funktionstüchtig und eine sehr gute Möglichkeit, sich ein paar Anregungen zu holen und Tricks abzugucken.

http://www.herber.de/bbs/user/29613.zip

Der Thread dazu: http://www.herber.de/forum/messages/714232.html

Zum Beispiel kann man da sehen, wie man ohne großen Aufwand (mit einer Hilfsspalte) und ohne VBA nach Punkten und Tordifferenz sortieren kann, obwohl Excel im Formelbereich keine echte Sortierfunktion hat.

Viel Spaß damit!
CaroS

Antwort 6 von Hase

Hallo CaroS

danke für den Tip, leider kann ich von hier aus nicht darauf zugreifen, werde es daher später von zuhause mir mal ansehen. Deiner Bescheibung nach ist es aber genau das, wonach ich gesucht habe.

@JöKe
Falls Deine Lösung auch bei mir funktionieren sollte, bin ich natürlich genauso zufrieden...

Erst mal vielen Dank an Euch,
Mike

Antwort 7 von JoeKe

Hallo Mike,

in meiner Testdatei läuft es wie du es möchtest. Zumindest so wie ich es verstanden habe.
Sobald Änderungen gemacht werden, wird die Tabelle sortiert.

Fußballtabelle

Gruß

JöKe

Antwort 8 von Hase

Hallo JöKe,

ich werde nochmal drüber brüten und melde mich morgen wieder.

Bis dahin und vielen Dank,
Mike

Antwort 9 von nighty

hi jöke :)

ein click und debugger

gruss nighty

Antwort 10 von Hase

Hallo nighty,

hilft "ein click und debugger" auch bei meinem Problem weiter ??? Mir sagt es leider gar nichts...

Gruß,
Mike

Antwort 11 von nighty

hi mike :)

jöke ist bestimmt schon am werkeln,wart ab :))

gruss nighty

Antwort 12 von JoeKe

Hallo,

leider kann ich das Problem nicht nachvollziehen.
Dennoch eine andere Variante.

Fußballtabelle 2

In Tabelle2 werden die Punkte und die Tordifferenzen ermittelt und durch Verknüpfung in Tabelle1 übertragen. Beim öffnen der Tabelle1 wird der Bereich A2 bis H5 sortiert.

Der Code befindet sich wieder im VBA-Projekt des Tabellenblattes und muss in deinem Fall in Tabelle3 - Tabelle10 kopiert werden. Der Bereich der sortiert werden soll, muss eventuell noch angepasst werden.
Falls auch diese Variante nicht funktioniert, lade doch mal, wenn möglich, deine Tabelle bei www.netupload.de hoch.

MfG

JöKe

Antwort 13 von CaroS

Hallo JöKe,

ich habe gerade noch einmal Deine AW3 gelesen, dabei ist mir folgendes aufgefallen:
Zitat:
Folgender Code ... sortiert die Spalten A-H erst absteigend nach Spalte B und dann nach Spalte C.

Hase schreibt:
Zitat:
Die Namen der Mannschaften stehen in Spalte A, die Punkte in Spalte B und die Tordifferenz in Spalte C.

Da in den meisten Sportarten die Punkte (in Spalte B) Vorrang vor der Tordifferenz (in Spalte C) haben, müsste man entweder eine einzige Sortierung mit 2 Sortierebenen (B höher als C) oder zwei einfache Sortierungen nacheinander durchführen, dann aber C vor B!

So macht das ja eigentlich auch Deinen Code in AW3 - wenn ich ihn richtig verstehe.
Columns("A:H").Sort Key1:=Range("B1"), Order1:=xlDescending, Key2:=Range("C1"), Order2:=xlDescending, ...
Dann würde also lediglich die Beschreibung "nach Spalte B und dann nach Spalte C" nicht so ganz passen.

Ich wollte nur mal darauf hinweisen. Da ich aber den aktuellen Stand Eures VBA-Codes nicht habe und nicht weiß, ob Ihr gerade in der richtigen Rangfolge sortiert, will ich mich ansonsten nicht weiter einmischen.
"ein click und debugger" verstehe ich auch einfach nur nicht, ist wohl Fachchinesich.

Gruß,
CaroS

Antwort 14 von nighty

hi caros :)

datei runtergeladen,einmal angeklickt,fehler
entsteht nun ein fehler der nicht behandelt wird ,so wird in den debugmodus gewechselt mit halt an der entsprechenden stelle

in kurzform

click debug

schniff mir liegen doch keine beschreibungen wie du bestimmt weisst :)))

gruss nighty

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: