Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Sortieren von Tabellen in Excel nach 1 Spalte





Frage

Hallo! Wie kann ich eine Tabelle von z.B. 10 Zeilen von Spalte B bis G nach den Zahlenwerten in Spalte D sortieren (Excel) ? Per Makro oder ständig im Hintergrund, mit Änderung jedes Zahlenwertes. Danke für Eure Hilfe, Gruss hpoelleritzer

Antwort 1 von Hajo_Zi

Hallo Namensloser,

siehe Dir mal die Beispiel an.

Link zur Datei

Gruß Hajo

Antwort 2 von hpoelleritzer

Hallo Hajo,
danke für die Datei.
Gibt es dazu eine Art Erklärung für Nicht-Visual-Basic-Vertraute, damit ich diese Datei auf meine Datei übertragen kann? Oder das ganze als Makro?
In meiner Tabelle stehen die zu sortierenden Daten z.B. einmal in den Zellen C7 bis E23 und einmal in den Zellen N7 bis X23 im Blatt Tabelle. Sortiert werden soll nach Spalte D und dann nach E, bzw. nach O und dann nach P.

Danke für Eure Hilfe!

Gruss
Horst

Antwort 3 von Hajo_Zi

Hallo Horst,

das passiert per Makro. Das Makro ist unter der Tabelle. Eine Beschreibung ist doch in der Tabelle. Was ist daran unklar in Verbindung mit dem Code?

Gruß Hajo

Antwort 4 von hpoelleritzer

Hallo Hajo,
mir ist nicht klar wie ich den Bereich eingrenze wo er sortiert.
er soll bei mir ja nur die zellen C7 bis E23 nach Zeile D sortieren.
Ich habe auf dem gleichen Blatt ja 2 Tabellen, die 2. tabelle soll nach Spalte O sortiert werden (Daten sind in N7 bis X23)

Wie sortiere ich absteigend statt aufsteigend? (z.b. sortieren nach Spalte D (grösste Wert steht oben) und bei Gleichheit in D nach Spalte E. Da soll aber der Kleinste Wert oben stehen.

Danke für Deine Hilfe.

Antwort 5 von Hajo_Zi

Hallo Horst,

ich habe das Beispiel auf meiner Hp ergänzt um Tabelle3, da ist Dein erstes Beispiel nachgebaut.
Ich vermute mal das für Deine zweite Tabelle bekommst Du hin.

Gruß Hajo

Antwort 6 von hpoelleritzer

Hallo Hajo,
ganz hervorragend, ich bin begeistert wie einfach die Einschränkung ist.

Allerdings:
Ein kleiner Fehler ist noch drin, die Zeile 7 wird in deinem Beispiel nicht mit sortiert (Bei Dir steht dort Wert). Warum weiss ich nicht, wenn ich den Bereich auf C6 erweitere haut das nicht hin, der Bereich ist ja eigentlich richtig definiert.

Danke für Deine Hilfe!

Gruss
Horst

Antwort 7 von Hajo_Zi

Hallo Horst,

das sehe ich mir am Abend nochmal an.

Gruß Hajo

Antwort 8 von Hajo_Zi

Hallo Horst,

das ist die Sortierreihenfolge von Excel erst Buchstaben dann Zahlen bei absteigender Reihenfolge. Da hält Excel sich an den AcI II Zeichensatz.

Gruß Hajo

Antwort 9 von hpoelleritzer

Hallo Hajo,
er ignoriert aber auch Zahlen in dieser Spalte, sowohl in meiner als auch in Deiner Tabelle. Wenn Du z.B. 2 in die Zelle D7 schreibst, müsste er die Tabelle umsortieren, macht er aber nur für den Bereicht C8 an.

Gruss
Horst

Antwort 10 von Hajo_Zi

HAllo HIrst,

gebe ich in meiner Datei in D2 z.B. 2 ein wird der Bereich "C7:E23" sortiert. Irgendwie verstehe ich Dein Problem nicht.

Gruß Hajo

Antwort 11 von hpoelleritzer

Hallo Hajo,
habe gerade extra nochmal neu Deine Datei von Deiner Webseite geladen.
Dort steht in der Zelle D7 "Wert" (Tabelle 3).
Wenn ich den durch 2 ersetze, müsste er die Zeile C7 bis E7 an vorletzte Stelle setzen. Denn C7 bis E23 stellt den zu sortierenden Wertebereich dar.
Er macht aber Nichts, während alle anderen Zeilen einwandfrei auf jede Wertänderung reagiert.

Das kann doch nicht an meinem Excel liegen. Ansonsten würde er gar Nichts sortieren, er ignoriert aber nur Zeile 7.

Gruss
Horst

Antwort 12 von Hajo_Zi

Hallo Horst,

ändere Header:=xlGuess in Header:=xlNo

Gruß Hajo

Antwort 13 von hpoelleritzer

Hallo Hajo,
hervorragend! das sollte es gewesen sein.

Vielen Dank für die schnelle und kompetente Hilfe!
Werde mir Deine Internetseite mal vormerken für Anregungen.

Gruss
Horst

Antwort 14 von hpoelleritzer

Hallo Hajo,
jetzt zerbreche ich mir den Kopf, wie ich meine 2. Sortierung im selben Blatt in den gleichen Code bekomme. ich habe versucht vor End Sub einfach den neuen code von DIM bis NEXT einzufügen. Das geht genausowenig wie den kompletten neuen code von private sub bis end sub einzufügen. Wahrscheinlich liegt es am dann gleichen Namen. (Da ich nicht weiss was jetzt Befehl und was wirklicher Name ist weiss ich nicht wie ich ein private sub mit neuem Namen erstellen kann, für dass dann auch worksheet und change gilt. Leider habe ich von den VB-Befehlen und den Oberflächen nicht wirklich Ahnung.

Gruss
Horst

Antwort 15 von Hajo_Zi

Hallo Horst,

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
´**************************************************
´* H. Ziplies *
´* 30.11.06 *
´**************************************************
Dim RaZelle As Range
´ ActiveSheet.Unprotect
For Each RaZelle In Range(Target.Address)
´ überprüfen ob Zelle im vorgegebenen Bereich
If RaZelle.Column = 4 Or RaZelle.Column = 5 Then
´ Sortieren
ActiveSheet.Range("C7:E23").Sort Key1:=Range("D7"), Order1:=xlDescending, Key2:=Range("E7") _
, Order2:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert.
ElseIf RaZelle.Column = 15 Then
ActiveSheet.Range("N7:X23").Sort Key1:=Range("O7"), Order1:=xlDescending, Header:=xlNo, MatchCase:= _
False, Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert.
End If
Next RaZelle
´ ActiveSheet.Protect
End Sub

Gruß Hajo

Antwort 16 von hpoelleritzer

Hallo Hajo,
danke für Deine Mühe, aber irgendwas stimmt noch nicht ganz. Er sortiert die 1. Tabelle, aber nicht die 2. Offensichtlich kommt er erst gar nicht in die 2. Schleife rein, denn er zeigt keinen Konvertierungsfehler oder dergleichen an.

Gruss
Horst

Antwort 17 von Hajo_Zi

Hallo Horst,

ich habe es bei mir getestet ohne Probleme.
Vielleicht solltest Du mir Deine Datei schicken?

Gruß Hajo

Antwort 18 von Hajo_Zi

Hallo Horst,

ist das Problem gelöst?
Nachdem die zweite Tabelle 1x von Excel ohne Makro sortiert wurde.

Gruß Hajo

Antwort 19 von hpoelleritzer

Hallo Hajo,
leider nicht.
bei mir sortiert er nur die linke Tabelle, auch nach einmaliger Sortierung "per Hand". In der rechten Tabelle werden zwar die Werte aktualisiert, es findet aber keine Sortierung der Zeilen nach den Werten in O und danach P statt. Da die Werte in beiden Tabellen gleich einbezogen werden, müsste er beide Tabellen gleich "behandeln".
Das er nur die 1. Tabelle sortiert deutet daraufhin, daß er gar nicht in die 2. Schleife geht oder kommt.


Gruss
Horst

Antwort 20 von Hajo_Zi

Hallo Horst,

Du hast mir die Datei zu meinem Home Rechner geschickt und dort habe ich es auch getestet. Das Ergebnis habe ich Dir auch per Mail mitgeteilt. Ich war davon ausgegangen, das dies Problem gelöst ist, da kein Rückmeldung.
Die Datei kann ich Dir erst am Abend zurück schicken.

Gruß Hajo

Antwort 21 von hpoelleritzer

Hallo Hajo,
habe schon auf Deine Mailadresse geantwortet.
Wenn es bei Dir wirklich für beide Tabellen einwandfrei funktioniert bin ich ratlos.
Bitte schau am Abend doch nochmal nach, ob er wirklich die Zeilen N7 bis X23 so verschiebt, daß sie nach Spalte O sortiert sind (E2 z.B. 1 und 14).
Bei mir verändert er in der rechten Tabelle keine Zeile.
Wenn es gar nicht gehen würde, hätte ich vermutet, daß vielleicht die Makros nicht aktiviert sind, aber die 1. Tabelle sortiert er ja einwandfrei.

Danke und Gruss
Horst

Antwort 22 von Hajo_Zi

Hallo Horst,

ich benutze Mailkonten für die Foren und Private und Private werden nur am Abend kontrolliert. Ich habe jetzt mal nachgeschaut.
Es liest sich in Deiner Mail so als ob in Spalte O; P keine Eingaben erfolgen sonder diese nur Verknüpft sind mit der ersten? Davon bin ich nicht ausgegangen. Mache dazu mal eine Aussage.
Ich hatte nach der Sortierung von Hand in Spalte was eingegeben.

Gruß Hajo

Antwort 23 von hpoelleritzer

Hallo Hajo,
die Daten werden über den Befehl indirekt von Blatt 1 geholt (Spalte O und P) Das ist aber auch für Tabelle 1 so (Spalte D und E). Wenn ich den Wert in Zelle E2 änder, werden die Werte in der Tabelle entsprechend automatisch angepasst.

D.h. die beiden Tabellen sind unabhängig voneinander, die Informationen befinden sich alle auf dem 1. Blatt.

Gruss
Horst

Antwort 24 von Hajo_Zi

Hallo Horst,

ich bin jetzt wieder an meinem Homerechner und habe Dein Datei auf. In Spalte O und P sind Formel und keine Eingaben wie von Dir geschrieben. Das Change Ereignis wird bei Formel nicht ausgeführt.
Bei Eingabe klappt der Code schon.
In den Spalten D und E sind ja auch Formel, also mein Code kann da auch nicht klappen. Da müßte ja das Private Sub Worksheet_Calculate() Ereignis einsetzen. Das die Sortierung bei jeder Formelveränderung macht. Es ist jetzt Wochende und es haben sich schon paar Leute vor Dir angemeldet.

Gruß Hajo

Antwort 25 von Hajo_Zi

Hallo Horst,

ich habe mir jetzt mal die Müe gemacht Deine Tabelle genauer anzusehen. So wie ich das Sehe gibst Du in E2 was ein und die Tabelle werden verändert. Ändere den Code wie folgt.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
´**************************************************
´* H. Ziplies *
´* 30.11.06 *
´**************************************************
Dim RaZelle As Range
´ ActiveSheet.Unprotect
For Each RaZelle In Range(Target.Address)
´ überprüfen ob Zelle im vorgegebenen Bereich
If Target.Address = "$E$2" Then
´ Sortieren
ActiveSheet.Range("C7:E23").Sort Key1:=Range("D7"), Order1:=xlDescending, Key2:=Range("E7") _
, Order2:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Range("N7:X23").Sort Key1:=Range("O7"), Order1:=xlDescending, Key2:=Range("P7") _
, Order2:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert.
End If
Next RaZelle
´ ActiveSheet.Protect
End Sub

Gruß Hajo

Antwort 26 von hpoelleritzer

Hallo Hajo,
jetzt funktioniert es einwandfrei.
Werde mir bei Gelegenheit mal in Ruhe ansehen was Du am Code geändert hast.

Vielen Dank für Deine Mühe und Deine professionelle Hilfe !

Gruss
Horst