Tipps & Tricks 17.10.2023, 08:00 Uhr

Excel: Tabellenblätter nummerieren und sortieren

Sie haben eine Reihe von Tabellenblättern, die Sie gerne nummerieren wollen. Oder sortieren. Aber nicht von Hand.
Nach langem Hin- und Herschieben der drei Dutzend Tabellenblätter in Ihrer Excel-Arbeitsmappe haben Sie die sinnvollste Reihenfolge für die einzelnen Tabellenblätter gefunden.
  • Wollen Sie diese nun erstmalig mit zweistelligen Zahlen nummerieren? Dann lesen Sie gleich unter «Erstnummerierung» weiter.
  • Haben Sie diese schon einmal zweistellig nummeriert, möchten sie aber umnummerieren? Dann ist der Abschnitt «Neu nummerieren» etwas für Sie.
  • Oder haben Sie die Nummerierung bereits, möchten die Blätter aber alphabetisch bzw. alphanumerisch sortieren? Dann greifen Sie zu den Tipps unter «Blätter sortieren».

Erstnummerierung

Sie haben eine Reihe von Tabellenblättern, die jetzt in der korrekten Reihenfolge sind. Die würden Sie nun gerne erstmals nummerieren. Das könnte vorher ungefähr so aussehen; achten Sie auf die Blattnamen:
Tabellenblätter nummerieren
Quelle: PCtipp.ch
Blenden Sie die Entwicklertools ein: Rechtsklick aufs Menüband, Menüband anpassen, in der rechten Spalte die Entwicklertools anhaken und auf OK klicken. Gehen Sie nun in den Entwicklertools zu VisualBasic. Alternativ drücken Sie einfach Alt+F11.
Möchten Sie die Nummerierung bzw. das Makro nur in dieser Excel-Mappe haben? Doppelklicken Sie auf «Diese Arbeitsmappe» und fügen Sie ins leere Code-Feld den folgenden Makrocode-Block ein:
Sub TabsNummerieren()
awc = ActiveWorkbook.Worksheets.Count
For i = 1 To awc
wnold = Worksheets(i).Name
ii = Format(i, "00")
wnnew = ii & Mid(wnold, 1)
Worksheets(i).Name = wnnew
Next i
End Sub
Falls Sie das Makro nur ein einziges Mal ausführen wollen, könnten Sie oben in der Symbolleiste aufs grüne Abspiel-Dreieck klicken. Schon rattert das Makro los und nummeriert die Blätter in der Reihenfolge, in der diese angeordnet sind:
Das Makro für die Erstnummerierung. Oben ist der Abspielknopf, um das Makro nur einmal auszuführen.
Quelle: PCtipp.ch
Wenn Sie es nun in dieser Excel-Arbeitsmappe nicht mehr brauchen, löschen Sie den Code wieder aus dem VBA-Fenster. Denn sonst wird Ihnen Excel beim nächsten Speichern das Dateiformat .xlsm (Excel-Arbeitsmappe mit Makros) ans Herz legen.
Falls Sie das Makro auch in anderen Excel-Dateien haben möchten, erstellen Sie eine Makro-Mappe namens Personal.xlsb und legen diese in einen Vorlagen-Ordner, siehe hierzu: «Excel: Arbeitsmappe für zentrale Makros».

Neu nummerieren

Vielleicht löschen Sie hie und da Tabs und schieben diese an andere Positionen. Eines Tages gehören diese neu nummeriert. Mit dem obigen Makro würde vor die alte zweistellige Nummer eine neue gesetzt. Aus «01Startseite» würde «0101Startseite». Darum brauchen Sie ein Makro, das diesmal die zweistelligen Zahlen nicht vor den Blattnamen setzt, sondern die ersten zwei Zeichen in den Blattnamen ersetzt.
Das wäre dann diese Variante des Makros:
Sub TabsNeuNummerieren()
awc = ActiveWorkbook.Worksheets.Count
For i = 1 To awc
wnold = Worksheets(i).Name
ii = Format(i, "00")
wnnew = ii & Mid(wnold, 3)
Worksheets(i).Name = wnnew
Next i
End Sub
Der einzige Unterschied in dieser zweiten Makrovariante: In der viertletzten Zeile sehen Sie «(wnold, 3)» anstelle von «(wnold, 1)». Das ist die dritte Stelle im alten Blattnamen. Ab dieser wird der Blattname übernommen, die ersten zwei Zeichen sind ja die alten Nummern, die durch die neuen überschrieben werden.

Blätter sortieren

Sie haben jetzt haufenweise durchnummerierte Blätter. Vielleicht arbeiten Sie aber an manchen Tagen nur mit dem ersten und den zwei letzten Blättern. Da ist es sinnvoll, die benötigten Blätter gleich am Anfang der Mappe zu platzieren. Das lässt sich einfach per Maus erledigen. Schnappen Sie den Reiter mit dem Blattnamen und ziehen Sie ihn an die gewünschte Position.
Aber sobald Sie damit fertig sind, würden Sie die Blätter gerne wieder in die korrekte Sortierreihenfolge bringen. Auch das geht per Makro; hier der Code (auf den sind wir hier gestossen):
Sub SortSheetsTabName()
    Application.ScreenUpdating = False
    Dim iSheets%, i%, j%
    iSheets = Sheets.Count
    For i = 1 To iSheets - 1
        For j = i + 1 To iSheets
            If Sheets(j).Name < Sheets(i).Name Then
                Sheets(j).Move before:=Sheets(i)
            End If
        Next j
    Next i
    Application.ScreenUpdating = True
End Sub
Das Einbinden oder Ausführen dieses Codes geht genau gleich wie bei den anderen beiden Makros. (PCtipp-Forum)
(Hinweis: Ursprung 30.10.2017, Update mit Korrekturen, neuen Screenshots und einem neuen Sortiermakro 17.10.2023)



Kommentare
Avatar
Leo52
17.10.2023
Sehr geehrte Frau Salvisberg, Die vorgestellten Routinen sind fürwahr sehr interessant und nützlich! Ich werde diese kopieren und wo angebracht verwenden. Danke