Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Automatische Reihenfolge von Spalten

Automatische Reihenfolge von Spalten
02.06.2004 14:12:48
Richard
Hallo!
Habe folgendes Problem:
Ich habe einen Excel-Tabelle, sämtliche Daten dieser Tabelle werden aus anderen Tabelleblättern derselben Tabelle gezogen (wobei einige dieser Blätter wiederum Daten aus anderen Excel-Dateien ziehen).
Ich möchte nun, dass Excel automatisch die Spalten in eine bestimmte Reihenfolge bringt. Die Reihenfolge ergibt sich aus den Inhalten der Zeile 1 und 2. Erste Sortierung soll nach der ersten Zeile (Text aufsteigen), zweite Sortierung soll sich nach der zweiten Zeile (Zahlen aufsteigen) erfolgen.
Ein Bsp.
X-A-B-C-D
1-BO-VB-BO-BO
237000-37100-37200-37100
3 25-16-18-34
4 10-1-25-256
Exel soll nun so sortieren:
X-A-B-C-C
1-BO-BO-BO-VB
2-37000-37100-37200-37100
3-25-34-18-16
4-10-256-25-1
Der zu sortiernde Bereich ist dabei: D1:P24
Excel soll dabei immer automtisch neusortieren, sobald sich irgendwelche Daten ändern.
Hatte das Problem schon mal ins Forum gestellt und folgende Antwort bekommen.
In das Modul des betreffenden Blattes (über Code-anzeigen) folgendes Skript stellen:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Intersect(Target, Me.Range("D1:P2")) Is Nothing Then Exit Sub
sortieren
End Sub

Und dann in ein neues "Klassenmodul":
Sub sortieren()
With Sheets("Teilaufgaben auf MA-Ebene").Range("D1:P24")
.Sort Key1:=Range("D1"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlLeftToRight
End With
End Sub
Hat aber nur insoweit geholfen, dass ich jetzt ein makro habe, dass ich manuell starten muss; Excel soll das Problem aber vollautomatisch handeln.
Wer weiss Hilfe?
Danke und Ciao,
Richard

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Reihenfolge von Spalten
02.06.2004 14:28:40
Ulf
"Excel soll dabei immer automtisch neusortieren, sobald sich irgendwelche Daten ändern."
Was heißt "irgendwie", wodurch ändern sich die Daten?
Ulf
AW: Automatische Reihenfolge von Spalten
02.06.2004 15:08:45
Richard
Hi Ulf!
Wie gesagt, das Tabellenblatt zieht die betreffenden Daten aus einem anderen Tabellenblatt, welches wiederum Daten aus bestimmten "Erhebungsbögen" zieht. Die Daten können sich ändern, indem sich z.B. BO in VB wandelt oder sich die Nummern ändern (z.B. 37000 auf 55200). Es handelt sich dabei um Erhebungen, die in verschiedenen Abteilungen drchgeführt werden (dementsprechende ändern sich auf die Abteilungsnummern z.B. eben von 37000 auf 55200). Excel soll dies automatisch sortieren, damit bei einer neuen Erhebung sich wieder die Tabelle nach den ersten zwei Zeilen sortiert (BO und VB sind Kürzel für Backoffice und Versicherungsbeauftragter), diese Kürzel können sich aber bei der nächsten Erhebung ändern.
Um den Ablauf nochmal zu verdeutlichen:
Über Erhebungsbögen werden Daten von Mitarbeitern (quasi ein Erhebungsbogen und eine Spalte pro Mitarbeiter) gesammelt. Die Excel-Datei zieht dann aus den jeweiligen Bögen die Daten in ein Tabellenblatt (hier werden die Verknüpfungen immer wieder bei jeder neuen Erhebung geändert. Das zu sortierende Excel-Tabellenlatt saugt sich die Daten dann wieder aus diesem Tabllenblatt. Und dann soll die Sortierung der Spalten erfolgen nach 1. Funktion der Mitarbeiter und 2. Abteilungsnummer.
OK, war langer Text; Danke fürs Durchquälen; hoffe, das Problem ist jetzt verständlicher.
Ciao,
Richard
Anzeige
PS: Frage noch offen
02.06.2004 15:09:44
Richard
FRAGE NOCH OFFEN
AW: PS: Frage noch offen
02.06.2004 15:12:01
Ulf
Verwende statt des Change- Ereignisses das Calculate- Ereignis.
Ulf
AW: PS: Frage noch offen
02.06.2004 18:56:36
Richard
Hi nochmal!
Danke erstmal für Deinen Tip.
Sorry, bin nicht so fit in VBA.
Vielleicht kannst Du mir die ausführlichen Makros geben. Dann kann ich die alten löschen und einfach die richtigen reinkopieren.
Mache nämlich irgendetwas falsch, da bei Änderungen nur Fehlermeldungen kommen (habe im zu sortiernden Tabellenblatt einfach Change in Calculate geändert; dann kommt aber folgende Fehlermeldung: Fehler beim Kompilieren! Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen.
Kannst Du mir weiterhelfen.
Danke nochmal im Voraus und Ciao,
Richard
Anzeige
AW: PS: Frage noch offen
02.06.2004 19:17:01
Ulf

Private Sub Worksheet_Calculate()
sortieren
End Sub

Ulf
AW: PS: Frage noch offen
03.06.2004 12:49:25
Richard
Hi nochmal!
Habe ich versucht!
Habe das Skript genauso in das Klassenmodul des zu sortierenden Tabellenblattes geschrieben. Jetzt bekomme ich aber eine Fehlermeldung und wenn ich auf Debuggen clicke, folgendes Skript (Modul 1) angezeigt:

Sub sortieren()
With Sheets("Teilaufgaben auf MA-Ebene").Range("D1:P24")
.Sort Key1:=Range("D1"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlLeftToRight
End With
End Sub

wobei Zeile 3-5 gelb markiert sind!
Den Fehler erhalte ich aber auch, wenn ích das Makro manuell starte! (ich nehme an, dass im Makro ein Fehler steckt, aber wo?

Weisst Du noch Hilfe!
Danke und Ciao,
Richard
Anzeige
AW: PS: Frage noch offen
03.06.2004 20:55:03
andre
Hallo Richard,
das Blatt wo sortiert wird muss aktiv sein oder Du musst vor die beiden Range auch den Blattnamen schreiben.
AW: PS: Frage noch offen
04.06.2004 11:07:35
Richard
Hi!
Sorry,
aber ich kenn mich mit Skripts nicht aus.
Kannst Du mir nicht die vollständigen Skripts durchgeben und in welche Module, Klassenmodule oder was auch immer diese geschrieben werden müssen.
Danke und Ciao,
Richard
AW: Lösung
05.06.2004 15:03:37
Martin Beck
Hallo Richard,
statt der beiden Codes folgendes (jeweils an der gleichen Stelle austauschen):
Sub sortieren()
With Sheets("Teilaufgaben auf MA-Ebene").Range("D1:P24")
.Sort Key1:=.Range("D1"), Order1:=xlAscending, Key2:=.Range("D2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlLeftToRight
End With
End Sub

und

Private Sub Worksheet_Calculate()
EnableEvents = False
sortieren
EnableEvents = True
End Sub

Gruß
Martin Beck
Anzeige
AW: PS: Frage noch offen
05.06.2004 20:15:45
andre
Hallo Richard,
ich meine so:

Sub sortieren()
With Sheets("Teilaufgaben auf MA-Ebene").Range("D1:P24")
.Sort Key1:=Sheets("Teilaufgaben auf MA-Ebene").Range("D1"), _
Order1:=xlAscending, Key2:=Sheets("Teilaufgaben auf MA-Ebene").Range("D2"), _
Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlLeftToRight
End With
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige