Registriert seit: 01.02.2017
Version(en): 13
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?
Danke schon mal vorab
Statler
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
14.08.2017, 10:23
(Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2017, 10:23 von RPP63.)
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<>0mit 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)
Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
14.08.2017, 13:39
(Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2017, 14:12 von lupo1.)
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
Registriert seit: 01.02.2017
Version(en): 13
Vielen Dank Euch beiden.
Werde ich ausprobieren und Rückmeldung geben
Gruß
Statler
Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
17.08.2017, 13:02
(Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2017, 13:07 von lupo1.)
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.
Registriert seit: 29.09.2015
Version(en): 2030,5
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
Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
17.08.2017, 13:11
(Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2017, 13:11 von lupo1.)
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.