Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenblätter nach Datum sortieren

Tabellenblätter nach Datum sortieren
11.07.2021 09:38:28
Peter
Hallo Forumsmitglieder,
eine Frage habe ich noch zu der Sortierung von Tabellenblättern. MEine Tabellenblätter werden in dem Format dd.mm.yyyy gespeichert.
Jetzt würde ich gerne, dass die Blätter nach Datum sortiert werden. Das Problem ist, dass die Sortierung dann nach Tagen geht...01.01.2021 01.02.2021 02.01.2021.. usw...
Ich würde gerne bei der Bennung von dd.mm.yyyy bleiben und diese nicht als yyyy.mm.dd umbauen.
Geht das und wenn ja, wie ?
2. Frage:
Kann man beim Erstellen eines neuen Blattes dieses bereits an die richtige Stelle einsortieren.
Ein Beispiel: 08.01.202 und 10.01.2021 sind vorhanden, 09.01.2021 wird nachträglich angelegt - das einsortieren zwischen den beiden vorhandenen wäre optimal.
VIelen Dank für Eure Hilfe vorab.
Peter
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter nach Datum sortieren
11.07.2021 09:48:27
Peter
Danke Hajo für deinen Beitrag, leider sortiert auch nur die dortige Beispielmappe nach Namen und nicht nach Datum:
Diesen Code verwende ich derzeit, nur leider wird dort halt in erster Linie nach den Tagen sortiert, was alle Blätter durcheinander wirft.

Sub Tabellen_Blaetter_Sortieren()
Dim rng As Range, arr
Dim i As Long
Application.ScreenUpdating = False
Application.StatusBar = "Sortiert: 0%"
'--- freien bereich im Tabellenblatt finden
Set rng = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(0, 2).End(xlUp).Resize(ActiveWorkbook.Sheets.Count)
arr = rng.Value
'--- Tab-Namen in Tabelle schreiben
For i = 1 To ActiveWorkbook.Sheets.Count
arr(i, 1) = Sheets(i).Name
Next
rng.Value = arr
'--- Tab-Namen im Tabellenblatt sortieren
rng.Sort key1:=rng(1), order1:=xlAscending, Header:=xlNo
arr = rng.Value
'--- Tabellenblätter entsprechend der Sortierung anordnen
For i = 1 To UBound(arr, 1) - 1
Application.StatusBar = "Sortiert: " & Format(i / UBound(arr, 1), "0%")
If Sheets(arr(i, 1)).Index  i Then Sheets(arr(i, 1)).Move before:=Sheets(i + 1)
Next
Application.StatusBar = "Sortiert: 100%"
Sheets(rng(i).Value).Move after:=Sheets(i)
'--- Aufräumen
rng.ClearContents
rng.Parent.Select
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Tabellenblätter nach Datum sortieren
11.07.2021 10:04:17
Hajo_Zi
Gut mein Code hat nicht gefalen und ist darum nicht in der Datei enthalten.
Ich schreibe nicht für den Paierkorb und bin darum raus.
Gruß Hajo
Anzeige
AW: Tabellenblätter nach Datum sortieren
11.07.2021 10:16:57
Svenja
Was heisst nicht gefallen?
Er hat nur nicht nach Datum sortiert...
AW: Tabellenblätter nach Datum sortieren
11.07.2021 10:18:37
Peter
Weißt Du eine bessere Lösung Svenja?
is so ne Sache mit den Namen :) owt
11.07.2021 10:41:17
ralf_b
Anzeige
AW: Tabellenblätter nach Datum sortieren
11.07.2021 11:39:42
Nepumuk
Hallo Peter,
teste mal:

Public Sub SortSheets()
Dim lngIndex1 As Long, lngIndex2 As Long
Application.ScreenUpdating = False
For lngIndex1 = 1 To Sheets.Count - 1
For lngIndex2 = lngIndex1 + 1 To Sheets.Count
If CDate(Sheets(lngIndex2).Name) 
Gruß
Nepumuk
Anzeige
AW: Tabellenblätter nach Datum sortieren
11.07.2021 12:47:34
GerdL
Hallo,
wenn Blattnamen ohne Datum mit vorhanden sind u. auszuklammern.

Public Sub Sort_Dated_Sheets()
Dim lngIndex1 As Long, lngIndex2 As Long
Application.ScreenUpdating = False
For lngIndex1 = 1 To Sheets.Count - 1
For lngIndex2 = lngIndex1 + 1 To Sheets.Count
If IsDate(Sheets(lngIndex2).Name) And IsDate(Sheets(lngIndex1).Name) Then
If CDate(Sheets(lngIndex2).Name) 
Gruß Gerd
Anzeige
Vielen Dank an Euch alle... Läuft owT
11.07.2021 13:15:40
Peter
Super vielen Dank an Euch alle.
Hat funktioniert. Die Lösung von Onur funktioniert einwandfrei.
Gerne !
11.07.2021 13:16:37
onur
Anzeige
AW: Gerne !
11.07.2021 14:02:50
Peter
Noch eine ergänzende Frage: Beim Anlagen des Tabellenblatts... kann man das direkt an seine richtige Stelle einsortieren?
AW: Gerne !
11.07.2021 14:10:41
onur
Lass einfach nach dem Erstellen des Blattes automatisch die Sub laufen.
AW: Gerne !
11.07.2021 14:15:33
Peter
Auch eine Möglichkeit :)
Hoffe bei 365 Blättern dauert das dann nicht so lange...:) Merci
Anzeige
AW: Gerne !
11.07.2021 14:19:19
onur
Wie denn sonst? Beim Erstellen eines neuen Blattes muss ja so oder so geprüft werden, wo genau es hin soll.
AW: Gerne !
11.07.2021 14:31:05
onur
Baue noch eine Überprüfung vor dem Verschieben in die vorletzte Zeile ein, dann geht es schneller.
If mi x Then Sheets(mi).Move Before:=Sheets(x)
AW: Gerne !
11.07.2021 14:15:16
onur
Das in Modul des Workbooks ("Diese Arbeitsmappe"):

Private Sub Workbook_NewSheet(ByVal Sh As Object)
SheetSort
End Sub

Anzeige
AW: Gerne !
11.07.2021 15:21:16
Peter
Alles erledigt - So habe ich es gemacht ;) Danke Onur... LG
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige