Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1836to1840
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
Inhaltsverzeichnis

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

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
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
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
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.
Anzeige
Gerne !
11.07.2021 13:16:37
onur
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
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

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige