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
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
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
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.
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
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
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
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
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
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
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
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
ä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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

