Blattnamen auslesen und in Zelle übernehmen

Hallo!

Mich plagt seit geraumer Zeit folgendes Problem: Ich möchte den Blattnamen in eine Zelle übernehmen. Folgende Formel liefert zwar das gewünschte Ergebnis (=TEIL(ZELLE(„Dateiname“);FINDEN("]";ZELLE(„Dateiname“))+1;255) - jedoch wird immer nur ein Wert einer ganzen Arbeitsmappe angezeigt. Ich brauche aber in jedem Tabellenblatt genau den Namen des Blattes angezeigt.

Außerdem bin ich auf der Suche nach einer Funktion, die mir Tabellenblätter automatisch durchnummeriert und benennt. Also ich stelle bei dem ersten Blatt z.B. den Wert 100 ein und möchte, dass die nächsten Blätter in der Arbeitsmappe dann 101, 102, 103 heißen.

Ich hoffe es gibt dafür eine Funktion, denn 2500 Blätter händisch durchzunummerieren wäre echt mühsam.

Mit freundlichen Grüßen

Thomas Seidl

Außerdem bin ich auf der Suche nach einer Funktion, die mir
Tabellenblätter automatisch durchnummeriert und benennt. Also
ich stelle bei dem ersten Blatt z.B. den Wert 100 ein und
möchte, dass die nächsten Blätter in der Arbeitsmappe dann
101, 102, 103 heißen.

findest du da
http://www.office-loesung.de/ftopic376591_0_0_asc.ph…

Hallo Thomas,

(=TEIL(ZELLE(„Dateiname“);FINDEN("]";ZELLE(„Dateiname“))+1;255)

  • jedoch wird immer nur ein Wert einer ganzen Arbeitsmappe
    angezeigt. Ich brauche aber in jedem Tabellenblatt genau den
    Namen des Blattes angezeigt.

nicht nachvollziehbar, es wird der Blattname angezeigt. Datei MU? gespeichert gewesen sein.
=TEIL(ZELLE(„Dateiname“);FINDEN("]";ZELLE(„Dateiname“))+1;255)
Allerdings ist die Formel unbrauchbar wenn du sie in mehreren Blättern benutzt, es wird überall der gleiche Name angezeigt.

Mache so wie Thomas Ramel einst schrieb:

Verwende dazu beispielsweise einen benutzerdefinierten Bereichsnamen:
Menü Einfügen --> Name --> Definieren --> Namen in der Arbeitsmappe:
Blattname --> Bezieht sich auf:

=WECHSELN(DATEI.ZUORDNEN(76+0*JETZT());"["&DATEI.ZUORDNEN(88)&"]";"")

–> [Hinzufügen] --> OK.

Nun kannst Du innerhalb der Mappe in einer Zelle in irgendeinem
Tabellenblatt die folgende Formel schreiben:
=Blattname

Bei 2500 Blättern kannste auch ein Makro nehmen:

Sub Namen()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
 wks.Range("D5").Value = wks.Name
Next wks
End Sub

Das ist dann nicht dynamisch, also bei Blattnamenswechsel mußte das Makro nochmals starten bzw. manuell den Namen in die Zelle eintragen.
Soll das wie die erste Lösung unbedingt dynamisch sein dann melde dich nochmal hier.

Gruß
Reinhard

Grüezi Thomas

Mich plagt seit geraumer Zeit folgendes Problem: Ich möchte
den Blattnamen in eine Zelle übernehmen. Folgende Formel
liefert zwar das gewünschte Ergebnis
(=TEIL(ZELLE(„Dateiname“);FINDEN("]";ZELLE(„Dateiname“))+1;255)

  • jedoch wird immer nur ein Wert einer ganzen Arbeitsmappe
    angezeigt.

Woher hast Du denn diese Formel?
Ihr fehlt ein wichtiger Teil, nämlich der zweite Parameter der Funktion ZELLE(), der dann auf das jeweilige Tabellenblatt verweist.
So wie sie hier steht wird immer das jeweils aktive Tabellenblatt angesprochen und Du hast überall denselbem Namen drin.

So wird es passen:

=TEIL(ZELLE("Dateiname";A1);FINDEN("]";ZELLE("Dateiname";A1))+1;255)


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Außerdem bin ich auf der Suche nach einer Funktion, die mir
Tabellenblätter automatisch durchnummeriert und benennt. Also
ich stelle bei dem ersten Blatt z.B. den Wert 100 ein und
möchte, dass die nächsten Blätter in der Arbeitsmappe dann
101, 102, 103 heißen.
Ich hoffe es gibt dafür eine Funktion, denn 2500 Blätter
händisch durchzunummerieren wäre echt mühsam.

Hallo Thomas,

Alt+F11, Einfügen–Modul, Code reinkopieren, Editor schließen.
Code starten mit Alt+F8 usw.

Option Explicit
'
Sub Name100()
Dim intAnz As Integer
Const N As Integer = 100
Application.ScreenUpdating = False
For intAnz = 1 To ThisWorkbook.Worksheets.Count
 Worksheets(intAnz).Name = Left("xyz" & Worksheets(intAnz).Name, 31)
Next intAnz
For intAnz = 1 To ThisWorkbook.Worksheets.Count
 Worksheets(intAnz).Name = CStr(N + intAnz - 1)
Next intAnz
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard