Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
316to320
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
316to320
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sortieren von Tabellen per Makro

Sortieren von Tabellen per Makro
02.10.2003 08:07:14
Peter
Guten Morgen...

Habe eine Arbeitsmappe mit 12 Tabellenblättern. Jede Tab. ist von Spalte A-R beschrieben, haben aber unterschiedlich viele und sich ständig ändernde Anzahl von Zeilen. Die Tab. sollen nach Spalte R absteigend sortiert werden. Durch löschen/hinzufügen von Zeilen muss ich mein moment. Makro immer per Hand ändern,damit das sortieren funktioniert. Wie läßt es sich verwirklichen, das die Tab sortiert werden und immer die richtigen Zeilen einbezogen werden? Weiteres Prob. unter d Teb. steht noch Text geschrieben. Sortieren A:A o. ä. klappt also nicht.

Danke für eure Hilfe
Peter

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren von Tabellen per Makro
02.10.2003 08:21:36
Lutz
Hallo Peter,

ich würde am Anfang des Makros die letzte nichtleere Zeile ermitteln mit zB:

cRow = [C65536].End(xlUp).Row (für Spalte C)

Wenn dann noch Text unter der Tab. steht, der nicht mitsortiert werden soll, mußt Du die Zeilenanzahl subtrahieren zB: Text über 3 Zeilen:

cRow = [C65536].End(xlUp).Row -3

Danach sortieren:

Range("A1:R" & cRow).Sort Key1:=Range("R1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Gruß
Lutz
Danke Lutz
02.10.2003 08:33:51
Peter
Danke für die schnelle Antwort. Werde es gleich ausprobieren.

Der zu sortierende Bereich fängt in Zeile 6 erst an. Funktioniert das Makro trotzdem? Du hast es für spalte c gemacht? Hatte kein Grund? Geht es mit ein Button für alle Tabellenblätter gleichzeitig?
Weiteres Prob wäre noch, das es nicht immer 3 Zeilen Text unter der Tab ist. Dieser Text variiert auch ständig. Ich weiß, alles nicht so einfach.

Was ist eigentlich mit mehr Tabs auf einen Blatt? Eine z. B. von Zeile 6-12, eine weitere von Zeile 14-16 usw.

Schön das es jemand gibt, der Ahnung hat!
Peter
Anzeige
AW: Danke Lutz
02.10.2003 09:09:48
Lutz
Hi Peter,

Um erst ab Zeile 6 zu sortieren, brauchst Du nur ändern:

Range("A6:R" & cRow).Sort Key1:=Range("R6"),.....

Um alle Blätter auf einmal zu sortieren, sind natürlich einige Voraussetzungen notwendig wie zB, dass alle Blätter die gleiche Struktur aufweisen etc.

Spalte C hatte ich zur Ermittlung der letzten Zelle nur als Beispiel angenommen.
Steht unter der Tabelle denn in jeder Spalte Text ?

Gruß
Lutz
AW: Danke Lutz
02.10.2003 09:28:30
Peter
Mit dem Text unter der Tabelle ist das verschieden. Es gibt auch Tabellen, in denen in jeder Spalte Text steht. Was meintest du, mit einigen Vorraussetzungen??

Gruß
Peter
Anzeige
AW: Danke Lutz
02.10.2003 09:50:28
Lutz
Ich denke es wäre besser, wenn Du Deine Datei mal hochlädst (falls sie keine geheimen Daten enthält).
Dann könnte ich Dir bestimmt effektiver helfen...

Gruß
Lutz
Geht leider nicht
02.10.2003 09:59:01
Peter
Kann die Datei leider nicht hochlaen. Bin auf Arbeit und in der Datei stehen Daten, die nicht nach außen dürfen.
AW: Geht leider nicht
02.10.2003 10:02:14
Lutz
Tja, dann bliebe nur noch die Möglichkeit, die Datei zu kopieren, alle relevanten Daten durch andere zu ersetzen etc...
Wird die Woche aber nicht mehr.
02.10.2003 10:06:56
Peter
Hab momentan viel um die Ohren, durch den Feiertag morgen. Also wenn dann frühestens nächste Woche.

Trotzdem danke für die Hilfe und schönen Feiertag
Peter
AW: Wird die Woche aber nicht mehr.
02.10.2003 10:30:47
Lutz
Dir auch ein schönes WE
Lutz
Anzeige
AW: Sortieren von Tabellen per Makro
02.10.2003 08:36:25
WernerB.
Hallo Peter,

wenn sich unter allen zu sortierenden Spalten Text befindet, kannst Du dieses Makro verwenden (ggf. wg der 12 Blätter in eine Schleife packen). Mangels Angaben bin ich in dem Makro davon ausgegangen, dass Du keine Überschriften hast.

Gibt es jedoch mindestens eine Spalte, unter der sich kein Text befindet, ist die von Lutz vorgeschlagene Methode sicher die richtige.

Option Explicit

Sub Peter()
Dim ZNr As String
ZNr = InputBox("Aufforderung:", "Titel")
If Not IsNumeric(ZNr) Then
MsgBox "Keine oder falsche Eingabe !" & vbCr & vbCr & "Makro-Abbruch !", _
vbOKOnly + vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
Range("A1:R" & ZNr).Sort Key1:=Range("R1"), Order1:=xlDescending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Anzeige
Danke Werner
02.10.2003 09:34:05
Peter
Hi Werner,

danke für deine Antwort. Es sieht so aus, das der zu sortierende Teil ab Zeile 6 beginnt. Was den Text angeht ist es unterschiedlich, mal in nur zwei Spalten, mal in allen. Scheint doch nicht zu einfach sein. Nur gut dass es hier im Forum Leute gibt, die sich ganz gut auskennen und eigentlich immer irgendwie weiterhelfen können!

Wie ist es eig. bei mehreren Tab auf einen Blatt. Z.B. Zeile 6-12, 14-18...

Danke für deine Hilfe
Peter
AW: Danke Werner
02.10.2003 09:50:48
WernerB.
Hallo Peter,

vielen Dank für die Rückmeldung.

Zu Deiner Frage: "Wie ist es eig. bei mehreren Tab auf einen Blatt. Z.B. Zeile 6-12, 14-18..."

Für eine qualifizierte Antwort braucht man hier schon ein wenig mehr Information:
- in welchen Blättern gibt es wieviel (eine, zwei oder noch mehr?) zu sortierende Tabellen?
- haben die zu sortierenden Tabellen Überschriften, die nicht mitsortiert werden sollen?
- beginnen alle zu sortierenden Tabellen immer in der gleichen Zeile (6 bzw. 14)?
- wie sieht Dein bisheriges Makro aus?
- sind weitere Randbedingungen für ein Makro relevant?

Gruß WernerB.
Anzeige
AW: Danke Werner
02.10.2003 10:04:32
Peter
Das ist nicht so einfach zu beantworten. Also es gibt in verschiedenen Arbeitsmappen (Tabellenblättern) eine immer andere Anzahl von Tabellen, die sich auch nicht immer in den genannten Zeilen befinden. Sie sind auch unterschiedlich groß. Es gibt auch Überschriften. Momentan sieht es ganz primitiv aus. Habe ein Makro aufgezeichnet, in der die Tab geöffnet wird, die Tab markiert wird, sortiert wird und anschließend geschlossen wird. Funktioniert ja auch. Man darf halt nur keine Zeilen löschen oder hinzufügen, dann muß ich das Makro immer per Hand ändern, was die Makierung angeht.

Gruß
Anzeige
Neuer Vorschlag
02.10.2003 11:07:02
WernerB.
Hallo Peter,

ohne detaillierte Informationen kann man Dir schlecht helfen.
Mein Vorsclag für ein gerade aktives Tabellenblatt:

Option Explicit

Sub Peter()
Dim SoBe As Range
Dim anzT As String, Bereich As String, lO As String, rO As String
Dim Zo As Long
Dim i As Byte
anzT = InputBox(vbCr & vbCr & _
"Wieviel Tabellen sollen in diesem Blatt sortiert werden ?", _
"Anzahl zu sortierender Tabellen")
If Not IsNumeric(anzT) Then
MsgBox "Keine oder falsche Eingabe !" & vbCr & vbCr & "Makro-Abbruch !", 0, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
For i = 1 To anzT
On Error Resume Next
Set SoBe = Application.InputBox(vbCr & vbCr & "Bitte Sortier-Bereich " _
& i & " (ohne Überschriftenzeile)" & vbCr & "mit der Maus markieren !", _
"Sortier-Bereich festlegen", , , , , , 8)
If SoBe Is Nothing Then
MsgBox "Nichts selektiert !" & vbCr & vbCr & "Makro-Abbruch !" _
, 0, "Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
On Error GoTo 0
Bereich = SoBe.Address(False, False)
lO = Left(Bereich, InStr(Bereich, ":") - 1)     'links oben
Zo = Range(lO).Row                              'Zeile oben
SoBe.Sort Key1:=Range("R" & Zo), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Set SoBe = Nothing
Next i
End Sub

Gruß WernerB.
Anzeige
AW: Neuer Vorschlag
02.10.2003 11:13:14
Peter
Danke erstmal für die Mühe, die du dir gegeben hast. Kann es aber heute leider nicht mehr ausprobieren, da ich jetzt aus EDV technischen Gründen den PC abschalten muß.

Ein schönes We
Gruß

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige