Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sheetsortierung ohne 1. Buchstaben

Forumthread: Sheetsortierung ohne 1. Buchstaben

Sheetsortierung ohne 1. Buchstaben
04.04.2021 02:24:18
Max
Hallo liebe Forum-Mietglieder,
ich m?chte Sheets sortieren ohne Einfluss des ersten Zeichens.
Die Sortierung anhand Buchstaben und Zahlen klappt und ist entsprechend simpel mit gr??er/kleiner-Vergleich umgesetzt:
https://www.herber.de/bbs/user/145296.xlsm
Sub SortSheet()
Dim arr()
n = Worksheets.Count
ReDim arr(n)
'Array mit Sheetnamen der aktuellen Reihenfolge erstellen
For k = 4 To n
arr(k) = (Worksheets(k).Name)
Next k
For i = 4 To n
For j = 4 To n
If arr(j) > arr(i) Then
h = arr(i)
arr(i) = arr(j)
arr(j) = h
End If
Next j
Next i
For g = 4 To n
'hier wird einfach jedes Sheet nach hinten verschoben entsprechend der geordneten  _
Reihenfolge des Arrays
Worksheets(CStr(arr(g))).Move after:=Worksheets(n)
Next g
End Sub
Allerdings m?chte ich, dass alle Sheets mit gleicher zweiter Nummer (V277-XXXX-...) hintereinander aufgef?hrt werden, wozu wiederum das erste Zeichen des Sheetnamens in die Sortierentscheidung nicht eingehen darf.
Was muss ich am Code ?ndern bzw. wie bekomme ich die entsprechende Abh?ngigkeit mit rein?
Vielen Dank im Voraus euch und sch?ne Ostern!
Max
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheetsortierung ohne 1. Buchstaben
04.04.2021 03:22:08
CitizenX
Hallo,
das beste was mir zZ eingefallen ist:
Sub SortSheetohne1Ch()
Dim arrsort: Set arrsort = CreateObject("System.Collections.Arraylist")
Dim nname
n = Worksheets.Count
'Array mit Sheetnamen der aktuellen Reihenfolge erstellen
For k = 4 To n
arrsort.Add Mid(Worksheets(k).Name, 2, Len(Worksheets(k).Name) - 1) & Chr(165) & Left( _
Worksheets(k).Name, 1)
Next k
arrsort.Sort
For g = 1 To arrsort.Count - 1
nname = Split(arrsort(g), Chr(165))(1) & Split(arrsort(g), Chr(165))(0)
Worksheets(nname).Move after:=Worksheets(n)
Next g
End Sub

VG
Anzeige
Vielen Dank!
06.04.2021 02:07:58
Max
Hi CitizenX,
musste etwas rumprobieren und konnte es sehr gut bei mir einbinden.
Vielen Dank. Ich w?nsche dir eine angenehme Woche :)
Viele Gr??e
Max
=INDEX(SORTIEREN(TEIL({17;35;21};{1.2};9);2);;1)
04.04.2021 17:02:54
lupo1
Dankesch?n
06.04.2021 02:11:04
Max
Hallo Lupo1,
auch dir vielen Dank f?r die Antwort.
Ich war mir allerdings nicht sicher, wie ich die Formel zu Sortierung von Sheets einbinde und werde demn?chst nochmal etwas googlen.
Viele Gr??e und eine angenehme Woche! :)
Max
Geht nicht ...
06.04.2021 08:48:43
lupo1
... da Sheets sich nicht per Formel sortieren lassen.
F?r mich (und m?glicherweise andere) war aber das Problem, ?bersetzt auf Tabellendaten, interessant.
Anzeige
Sheetsortierung ohne 1. Buchstaben
04.04.2021 02:24:18
Max
Hallo liebe Forum-Mietglieder,
ich m?chte Sheets sortieren ohne Einfluss des ersten Zeichens.
Die Sortierung anhand Buchstaben und Zahlen klappt und ist entsprechend simpel mit gr??er/kleiner-Vergleich umgesetzt:
https://www.herber.de/bbs/user/145296.xlsm
Sub SortSheet()
Dim arr()
n = Worksheets.Count
ReDim arr(n)
'Array mit Sheetnamen der aktuellen Reihenfolge erstellen
For k = 4 To n
arr(k) = (Worksheets(k).Name)
Next k
For i = 4 To n
For j = 4 To n
If arr(j) > arr(i) Then
h = arr(i)
arr(i) = arr(j)
arr(j) = h
End If
Next j
Next i
For g = 4 To n
'hier wird einfach jedes Sheet nach hinten verschoben entsprechend der geordneten  _
Reihenfolge des Arrays
Worksheets(CStr(arr(g))).Move after:=Worksheets(n)
Next g
End Sub
Allerdings m?chte ich, dass alle Sheets mit gleicher zweiter Nummer (V277-XXXX-...) hintereinander aufgef?hrt werden, wozu wiederum das erste Zeichen des Sheetnamens in die Sortierentscheidung nicht eingehen darf.
Was muss ich am Code ?ndern bzw. wie bekomme ich die entsprechende Abh?ngigkeit mit rein?
Vielen Dank im Voraus euch und sch?ne Ostern!
Max
Anzeige
AW: Sheetsortierung ohne 1. Buchstaben
04.04.2021 03:22:08
CitizenX
Hallo,
das beste was mir zZ eingefallen ist:
Sub SortSheetohne1Ch()
Dim arrsort: Set arrsort = CreateObject("System.Collections.Arraylist")
Dim nname
n = Worksheets.Count
'Array mit Sheetnamen der aktuellen Reihenfolge erstellen
For k = 4 To n
arrsort.Add Mid(Worksheets(k).Name, 2, Len(Worksheets(k).Name) - 1) & Chr(165) & Left( _
Worksheets(k).Name, 1)
Next k
arrsort.Sort
For g = 1 To arrsort.Count - 1
nname = Split(arrsort(g), Chr(165))(1) & Split(arrsort(g), Chr(165))(0)
Worksheets(nname).Move after:=Worksheets(n)
Next g
End Sub

VG
Anzeige
Vielen Dank!
06.04.2021 02:07:58
Max
Hi CitizenX,
musste etwas rumprobieren und konnte es sehr gut bei mir einbinden.
Vielen Dank. Ich w?nsche dir eine angenehme Woche :)
Viele Gr??e
Max
=INDEX(SORTIEREN(TEIL({17;35;21};{1.2};9);2);;1)
04.04.2021 17:02:54
lupo1
Dankesch?n
06.04.2021 02:11:04
Max
Hallo Lupo1,
auch dir vielen Dank f?r die Antwort.
Ich war mir allerdings nicht sicher, wie ich die Formel zu Sortierung von Sheets einbinde und werde demn?chst nochmal etwas googlen.
Viele Gr??e und eine angenehme Woche! :)
Max
Geht nicht ...
06.04.2021 08:48:43
lupo1
... da Sheets sich nicht per Formel sortieren lassen.
F?r mich (und m?glicherweise andere) war aber das Problem, ?bersetzt auf Tabellendaten, interessant.
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