Zahlenformat für Kapitel
#1
Hallo,
ich möchte in Excel eine Liste von Kapitelüberschriften eingeben und verwalten. Vom Prinzip her so:

1.      Überschrift A
1.1    Text B
1.1.1  Text C
2.       Überschrift B
....
2.2.3.4  Irgendein Text
....
7.4.3.1   Was anderes


Das Problem, dass ich habe ist, dass ich die Kapitel nicht in der richtigen Reihenfolge aufnehmen kann und daher im Nachhinein die Kapitel automatisch sortieren lassen möchte. Wie kann ich ein benutzerdefiniertes Zahlenformat angeben, mit dem ich im Nachhinein noch Kapitel in genau diesem oben verwendeten Format sortieren kann? (Kapitelnummern und Text sind in getrennten Spalten)

Geht das in Excel?  Huh

Danke schon mal vorab
Statler
Top
#2
Moin!
In Deinem Fall würde ich 4 Spalten nutzen, dann kann man problemlos sortieren.
Nicht vergebene Unterkapitel füllst Du mit 0 auf.
Den Spalten A:D weist Du das ben.def. Zahlenformat 0_.;; zu.
Die Spalten A:C erhalten eine bedingte Formatierung
Formel ist: =B1<>0
mit dem ben.def. Zahlenformat 0"."
sieht dann vor Sortierung so aus:
   
sortiert wird dann so:
   
Resultat:
   

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Sub Autonummerierung(): Workbooks.Add xlWorksheet: [A1:D1] = Split("Trigger Kapitel Titel Kombi")
[A2:A21] = WorksheetFunction.Transpose(Split("1 1 1 1 0 0 -1 -1 1 0 1 0 -2 1 0 0 -2 1 0 -1"))
[C2:C21] = WorksheetFunction.Transpose(Split("Getränke Wasser abgefüllt still medium classic " & _
"Kranberger Bier Pils Weizen Kristall Hefe Wein rot weiß rosé Essen Vorspeise Nachspeise Fazit"))
ActiveWorkbook.Names.Add Name:="Nummerierung", RefersToR1C1:= _
"=TEXT(SUBSTITUTE(R[-1]C,""."",)*10^RC[-1]+1,REPT(""0""""."""""",LEN(R[-1]C)/2+RC[-1]))"
[B2].FormulaR1C1 = "=""1.""": [B3:B21].FormulaR1C1 = "=Nummerierung"
[D2:D21].FormulaR1C1 = "=RC[-2]&"" ""&RC[-1]"
[E1] = 8: [E2:E21].FormulaR1C1 = "=REPT("" "",(LEN(RC[-3])-2)/2*R1C)&RC[-2]": End Sub


Man kann beliebig Zeilen einfügen und löschen, wegen benannter Formel statt Zellformel.
Die Ebenen B:B der Kapitel C:C müssen manuell in A:A getriggert sein (die enthaltene "Intelligenz") - ist aber selbsterklärend. Wehe, wenn nicht.
B2: Man kann dort auch mit 5. statt 1. (oder auch mit 4.1.5.) beginnen!
Es geht nur bis zur 9 in einer Ebene. Sollte meistens reichen. Zweistellige Zahlen würden aber auch das Bild stören.
15 Ebenen sind möglich (15stellige Zahl in Excel).
Die Formel stammt von mir (von gerade eben). Darf ohne Lizenzabgaben verwendet werden. ;)

D:E sind nur Verwendungsbeispiele ("Gimmicks"). Können bei Nichtgefallen gelöscht werden.
E1: steuert die Stärke des jeweiligen Einzugs zur Vorebene. 0 = kein Einzug
Top
#4
Vielen Dank Euch beiden.
Werde ich ausprobieren und Rückmeldung geben

Gruß
Statler
Top
#5
Ich habe nachgearbeitet (siehe Grün). Die Formel ist sicher noch kürzbar, aber heute wollte ich mal nur das (jetzt grenzenlose) Ergebnis haben.

Das folgende ist "kein VBA". Kein .xlsm! Sondern einfach nur
Markieren, Strg-C, in Excel Alt-F11, Alt-E-M, Strg-V, F5!
Es wird eine Tabelle erstellt, es ist also ein Erstellungsmakro.

Sub Autonummerierung() 'Variante mit mehr als 15 Ebenen und Nummern pro Ebene 1:9^9. Test xl2000 + 2010
Workbooks.Add xlWorksheet: [A1:D1] = Split("Trigger Kapitel Titel Kombi")
[A2:A21] = WorksheetFunction.Transpose(Split("1 1 1 1 0 0 -1 -1 1 0 1 0 -2 1 0 0 -2 1 0 -1"))
[C2:C21] = WorksheetFunction.Transpose(Split("Getränke Wasser abgefüllt still medium classic " & _
"Kranberger Bier Pils Weizen Kristall Hefe Wein rot weiß rosé Essen Vorspeise Nachspeise Fazit"))
ActiveWorkbook.Names.Add Name:="XX", RefersToR1C1:="=R[-1]C"
ActiveWorkbook.Names.Add Name:="Ebenen", RefersToR1C1:="=MAX(1,LEN(XX)-LEN(SUBSTITUTE(XX,""."",))+MIN(1,RC[-1]))"
ActiveWorkbook.Names.Add Name:="Wennfehler", RefersToR1C1:="=SUBSTITUTE(LEFT(" & _
"SUBSTITUTE(XX,""."",""-"",Ebenen-1),SEARCH(""-""," & _
"SUBSTITUTE(XX,""."",""-"",Ebenen-1))),""-"",""."")&MID(SUBSTITUTE(XX&0,"".""," & _
"REPT("" "",99)),Ebenen*99-98,99)+1&""."""
ActiveWorkbook.Names.Add Name:="Nummerierung", RefersToR1C1:= _
"=IF(ISERROR(Wennfehler),MID(XX,1,SEARCH(""."",XX)-1)+1&""."",Wennfehler)"
[B2].FormulaR1C1 = "=""2017.8.17.1.""": [B3:B21].FormulaR1C1 = "=Nummerierung"
[D2:D21].FormulaR1C1 = "=RC[-2]&"" ""&RC[-1]"
[E1] = 8: [E2:E21].FormulaR1C1 = "=REPT("" "",(LEN(RC[-3])-2)/2*R1C)&RC[-2]": End Sub


Bezüglich der Namen musste für xl2000 WENNFEHLER durch WENN(ISTFEHLER ersetzt werden.
Außerdem können in xl2000 benannte Formeln nur 256 Zeichen haben.
Top
#6
diese 'strings' werden doch immer richtig sortiert ?

1.      Überschrift A
1.1    Text B
1.1.1  Text C
2.       Überschrift B
2.2.3.4  Irgendein Text
7.4.3.1   Was anderes
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#7
Ist das eine Frage, snb?

Bei #3: Ja (getreu Deinem Beispiel)
Bei #5: Nein

Denn sobald mehr als eine Stelle pro Ebene, dann nicht.

Das war hier aber auch nicht die Anforderung. Außerdem müssten die Formeln dann vorher in Werte überführt werden.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste