Firmenlink

 

Excel: Tabellenblätter nummerieren und sortieren

Sie haben eine Reihe von Tabellenblättern, die Sie gerne nummerieren wollen. Oder sortieren. Aber nicht von Hand.

von Gaby Salvisberg 01.11.2017

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:

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.

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 auch in anderen Excel-Dateien haben möchten, erstellen Sie eine Makro-Mappe namens Personal.xlsb und legen diese in einen Vorlagen-Ordner.

Klicken Sie nun im VisualBasic-Editor auf Datei/Schliessen und zurück zu Excel. Speichern Sie die Datei. Hierbei ist es wichtig, dass Sie zu Speichern unter und zum Dateityp *.xlsm greifen, denn nur in diesem führt Excel die Makros aus. Prüfen Sie nochmals, ob die Reihenfolge Ihrer Tabellenblätter wirklich sitzt. Passt alles, klicken Sie in den Entwicklertools auf Makros. Klicken Sie auf DieseArbeitsmappe.TabsNummerieren und gehen Sie zu Ausführen. Wenn Sie mögen, können Sie das Makro auch in ein Icon in der Excel-Schnellzugriffsleiste einbinden.

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 das die ersten zwei Ziffern 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 BlätterAufsteigendSortieren()
Dim intI As Integer, intJ As Integer
For intI = 1 To Sheets.Count
For intJ = 1 To Sheets.Count - 1
If UCase(Sheets(intJ).Name) > UCase(Sheets(intJ + 1).Name) Then
Sheets(intJ).Move after:=Sheets(intJ + 1)
End If
Next
Next
End Sub

Das Einbinden oder Ausführen dieses Codes geht genau gleich wie bei den anderen beiden Makros. (PCtipp-Forum)

Tags: Excel, Office

    Kommentare

    Keine Kommentare

    Sie müssen eingeloggt sein, um Kommentare zu verfassen.