Automatische Nummerierung mit mehreren Ebenen

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
d'r Bastler
Beiträge: 670
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 175 Mal
Danksagung erhalten: 90 Mal

Automatische Nummerierung mit mehreren Ebenen

#1

Beitrag von d'r Bastler »

Moin allerseits!

Automatische Nummerierungen sind in XL eigentlich keine große Sache - dazu gibt es verschiedene einigermaßen bekannte Techniken. Spannend wird es erst, wenn die Nummerierung über mehrere Ebenen (und dann noch bedingt) formatiert werden sollen. Beispiel:
1
1.1
1.2
1.2.1
1.2.2
usw.
Formelprofis schreiben dazu (angeblich VBA-freie) Formelkonstruktionen, die ungefähr so übersichtlich sind, wie ...

Eine konkrete Anfrage dazu stammt aus einem anderen Forum, wurde leider wenig freundlich beantwortet, weswegen ich den Fragesteller hierher herzlich einlade. Ziel der Einladung: 1. das konkrete Thema zu lösen 2. erste qualifizierte Schritte in XL und VBA zu gehen.

@ Son. .. elt: Let's fetz! Zur gemeinsamen Arbeit kannst Du als Gast anfangen, eine Registrierung eröffnet Dir aber weit bessere Möglichkeiten der Teilnahme. Herzlich willkommen!

Eine entsprechende Mappe ist vorbereitet.

Grüße
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Sonne

Re: Automatische Nummerierung mit mehreren Ebenen

#2

Beitrag von Sonne »

Hallo,

gern. Wenn möglich, können wir gern die Mappe aus dem anderen Forum nehmen, die ich dort hochgeladen habe. Das ist genau die, um welche es geht bzgl. der Formatierung. Sonst kann ich auch einen Screenshot hochladen.

Wie fangen wir an?

Sonnenwelt
Benutzeravatar
d'r Bastler
Beiträge: 670
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 175 Mal
Danksagung erhalten: 90 Mal

Re: Automatische Nummerierung mit mehreren Ebenen

#3

Beitrag von d'r Bastler »

Moin Sonne,

eben sehe ich, dass Du Dich schon registriert hast - herzlich willkommen!

Wie fangen wir an? Lade bitte Deine letzte/beste Version hier hoch, damit ich sie mir gründlich anschauen kann. Vermutlich werde ich sie dann ziemlich über den Haufen werfen - nicht um Dich zu frustrieren, sondern weil es sehr oft (nicht immer) einfacher ist, auf der grünen Wiese anzufangen, statt ein struppiges Dickicht zu lichten, sagt mir meine Erfahrung.

Als zweiten Schritt bitte ich Dich um eine Selbsteinschätzung Deiner vorhandene Kenntnisse. Ich teile XL in folgende Ebenen ein:
  • Die Formelwelt: Du kannst grundlegende Formeln selbst schreiben und kommst zum gewünschten Ergebnis
  • Die erweiterte Funktionen-Welt: PowerQuery, Intelligente Tabellen, usw., sind Dir zumindest teilweise vertraut
  • Die Makrowelt mit Recorder: Du kannst immer wiederkehrende Aufgaben als Makro aufzeichnen
  • Die Makrowelt ohne Recorder/VBA: Du kannst VA-Routinen selbst erstellen oder aufgezeichnete Makros modifizieren
Schreib einfach mal eine Einschätzung (gerne als PN) wie Anfänger, Gut in Übung, Neugierig auf mehr, Furchtloser Allesprobierer und Profi. Wobei jedes Level das vorherige voraussetzt.

Alles böhmische Dörfer? macht nichts! In keinem Punkt sehe ich mich besser als N, im zweiten klar bei A

Für heute 'nen schönen Abend noch und viele Grüße ...
Folgende Benutzer bedankten sich beim Autor d'r Bastler für den Beitrag:
Sonnenwelt
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Sonnenwelt
Beiträge: 14
Registriert: 6. Jun 2023, 21:20
Hat sich bedankt: 3 Mal
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: Automatische Nummerierung mit mehreren Ebenen

#4

Beitrag von Sonnenwelt »

Hallo d´r Bastler,

vielen lieben Dank für das Angebot der Hilfe :)

Die Datei ist im Anhang. Meine Kenntnisse - alle auf Anfang :-P

Ich wünsche dir auch einen schönen Abend! Für heute bin ich erst mal raus.

Viele Grüße
Dateianhänge
Automatische Nummerierung bei Wert.xlsx
(16.27 KiB) Noch nie heruntergeladen
Folgende Benutzer bedankten sich beim Autor Sonnenwelt für den Beitrag:
d'r Bastler
Benutzeravatar
d'r Bastler
Beiträge: 670
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 175 Mal
Danksagung erhalten: 90 Mal

Re: Automatische Nummerierung mit mehreren Ebenen

#5

Beitrag von d'r Bastler »

Okay, dann doch noch einen zur Guten Nacht. Um Dir die Möglichkeit zu geben, mich einsortieren zu können:

Die einfache Formelwelt eignet sich sehr gut, um (auch komplexe) Berechnungen durchzuführen, die immer aus den gleichen Faktoren bestehen. Hier bezeichne ich mich als N

Die erweiterte für Auswertungen, die regelmäßig (z.B. für Quartalsberichte, u.Ä.) erstellt werden müssen, ohne dabei ein Datenmodell (also die Menge aller relevanten Daten) verlassen zu müssen. Hier kommen Filterfunktionen zum Einsatz, bei denen XL prächtig hilft. Meine Position hier: ein ehrliches A

Der Makrorecorder (ich benutze ihn nur noch extrem selten) ermöglicht, täglich zu wiederholende Aufgaben mit vielen Klicks durch die Menüs auf einzelne ShortCuts zu automatisieren. Mit den Möglichkeiten, hier Anpassungen vor allem durch Verallgemeinerung von z.B. Druckbereichen, Zieladressen, Pfaden vorzunehmen, öffnet sich der Weg zur ...

... echten Programmierung in VBA. Oft schrecken hier Menschen zurück, weil sie sich das nicht zutrauen. Wer neugierig bleibt, hat sehr gute Chancen, mit VBA (einer Einsteiger-Sprache) sehr bald gute Ergebnisse zu erzielen. Allerdings darf man dazu nicht mehr in Papierformaten denken, sondern in Daten.

Der letzte Weg ist -wann immer sinnvoll- meiner und sehe mich in der Kategorie N/F

Warum das? Formeln müssen immer Tabellen-bezogen, Zellen-bezogen kopiert (ich nenne es mitgeschleppt) werden. Vergleichbares VBA kann man mit (oft) wenigen Zeilen auf alle Zellen eines Blattes oder auch mehrerer Blätter anwenden. Und so können z.B. auch Benutzer, die den Hang haben, Formeln zu zerstören, ausgeschlossen werden. VBA ist sehr oft funktionssicherer.

Jetzt aber, husch ab ins Körbchen ;-)

Grüße
Zuletzt geändert von d'r Bastler am 6. Jun 2023, 23:49, insgesamt 3-mal geändert.
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
d'r Bastler
Beiträge: 670
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 175 Mal
Danksagung erhalten: 90 Mal

Re: Automatische Nummerierung mit mehreren Ebenen

#6

Beitrag von d'r Bastler »

HINWEIS: Bei Attachements steht immer noch NOCH NIE HERUNTERGELADEN. Das ist leider noch solange falsch, bis ich endlich das Update für die VBAsteleien eingespielt habe. SORRY!

Das erste Attachement in diesem Thema habe ich eben heruntergeladen.
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Sonnenwelt
Beiträge: 14
Registriert: 6. Jun 2023, 21:20
Hat sich bedankt: 3 Mal
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: Automatische Nummerierung mit mehreren Ebenen

#7

Beitrag von Sonnenwelt »

Hallo,

alles klar vielen Dank!

Noch die Anmerkung, dass es sich um microsoft 365 apps for enterprise handelt. Die Anzahl der Unterpunkte sollte variabel sein (also mal bis 1.1.3 oder mal bis 2.1.4...). Wichtig ist auch, dass beim Einfügen/Löschen einer Zeile sich das Zahlenformat automatisch anpasst.
Also: Wenn das Wort "Registerkarte" in Spalte B erscheint, soll in Spalte A die erste Ebene z. B. 1 oder 2 erscheinen. Wenn in Spalte B das Wort "Menüpunkt" erscheint, soll ich Spalte A die zweite Ebene z.B. 1.2 oder 2.3 erscheinen. Wenn in Spalte B das Wort "Aktivität" erscheint, soll in Spalte A die dritte Ebene z.B. 1.1.1 oder 2.2.1 erscheinen.
Wäre schön, wenn das alles klappt :) Vielen Dank!

Was sagst du zu meiner bisher erstellten Mappe?

Viele Grüße
Benutzeravatar
Wisi82
Beiträge: 79
Registriert: 14. Apr 2023, 14:22
Hat sich bedankt: 11 Mal
Danksagung erhalten: 25 Mal
Kontaktdaten:

Re: Automatische Nummerierung mit mehreren Ebenen

#8

Beitrag von Wisi82 »

Hallo zusammen

Da ich den Beitrag im anderen Forum nicht gelesen habe (weiss nicht wo), weiss ich nicht genau worum es genau geht. Evtl. wäre es nicht schlecht das Problem hier nochmal kurz zu beschreiben, ein paar Bespieldaten im File wären ebenfalls praktisch, dann könnten auch andere Leute versuchen zu helfen, ich hätte im Moment etwas Zeit ;)
@Sonnenwelt: In deinem letzten Beitrag verstehe ich das Ziel leider nicht zu 100%, ich komme etwa auf 75%.
@d' r Bastler: Viel gibt es nicht um über den Haufen zu werfen :D

Beste Grüsse Erwin
Windows 10 Home, Office 2019 Professional, Aber meistens ist es der Kopf, welcher Verwirrung stiftet ;)
Benutzeravatar
d'r Bastler
Beiträge: 670
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 175 Mal
Danksagung erhalten: 90 Mal

Re: Automatische Nummerierung mit mehreren Ebenen

#9

Beitrag von d'r Bastler »

Moin Sonne, moin Erwin (schön, dass Du auch mitmischt!),

nach der Eröffnung der Frage hatte ich bereits einen ersten Schnellschuss in VBA gebaut und gezeigt. Nachdem das Stichwort anpassen bisher noch ein Fremdwort ist, hier eine überarbeitete Version, mit Deinen Filterbegriffen:

Code: Alles auswählen

Option Explicit

Sub AutoNum()
Dim i As Integer, r As Integer
Dim iLevel_1 As Integer, iLevel_2 As Integer, iLevel_3 As Integer
Dim sLevel As String

r = UsedRange.Rows.Count
iLevel_1 = 1
iLevel_2 = 1
iLevel_3 = 1
Columns(1).Clear
Columns(1).NumberFormat = "@"

For i = 1 To r
    sLevel = Cells(i, 2)
    Select Case sLevel
        Case "Registerkarte"	'ANGEPASST
            Cells(i, 1) = iLevel_1
            iLevel_1 = iLevel_1 + 1
            iLevel_2 = 1
            iLevel_3 = 1
        Case "Menüpunkt"	'ANGEPASST
            Cells(i, 1) = iLevel_1 - 1 & Chr(46) & iLevel_2
            iLevel_2 = iLevel_2 + 1
        Case "Aktivität"	'ANGEPASST
            Cells(i, 1) = iLevel_1 - 1 & Chr(46) & iLevel_2 - 1 & Chr(46) & iLevel_3
            iLevel_3 = iLevel_3 + 1
        Case Else
            Cells(i, 1) = ""
    End Select
Next i

MsgBox "Done!"

End Sub
Okay, was musst Du damit tun?

Du öffnest eine Arbeitsmappe, trägst in Spalte B mehrere Deiner Stichwörter in beliebiger Reihenfolge ein, klickst mit der rechten Maustaste auf den Namen des Tabellenblatts und wählst Code anzeigen. In Deinem Fall gehe ich davon, dass Du rechts eine komplett leere weiße Seite vorfindest. Sollte dort bereits ein erste Zeile Option Explicit zu sehen sein, lösche diese bitte. Dann kopierst Du den kompletten Code in dieses Fenster.

Dann speicherst Du diese Arbeitsmappe als .xlsb (Datei > Speichern unter > Speicherort auswählen > Dateinamen AutoNum eingeben, im Dropdown Dateityp die dritte Zeile Excel_Binärarbeitsmappe (xlsb) auswählen und speichern. Damit ist das Dingen schon mal sicher am Start.

Okay, was tut das Dingen?

Jetzt hast Du erste relevanten Werte in Spalte B, aber noch keine Nummerierung. Jetzt rufst Du das Makro auf: Du drückst Du Alt+F8 und es öffnet sich ein kleiner Dialog, in dem Du Tabelle1.Autonum findest. Wähle diesen aus und besichtige, was passiert ist. Vor Deinen Einträgen stehen jetzt die Nummerierungen in dem von Dir gewünschten Format. Wenn du die Einträge änderst, ergänzt, löscht rufst du einfach wieder das Makro auf und die Nummerierung wird komplett aktualisiert.

Bisher erkennt der Code maximal drei Ebenen mit genau Deinen Stichworten. Daraus vier oder fünf zu machen ist lediglich ein bisschen Fleißarbeit (Sdas meinte ich mit anpassen). Das Ganze so umzubauen, dass Du ungebremst weitere Begriffe abfragen kannst, lässt sich dann mit einer Hilfstabelle realisieren, aus der diese Begriffe von VBA abgefragt werden und die Ebenen automatisch hinzugefügt werden.

Warum lade ich nicht einfach eine funktionierende Mappe hoch? Du wolltest Step-by-Step was lernen! Voilá!

Viel Spaß bei den ersten Tests. Jetzt widme ich mich erst meinem Mittagessen und dann Deiner Tabelle.

Nachtrag: Gute Nachricht: Wir können direkt auf der Basis Deiner Tabelle weitermachen :P
Dazu nur diese eine Frage: Wieviel Levels benötigst Du tatsächlich, gibt es dafür ein realistisches Limit (mit Reserve)?

Schöne Grüße
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
d'r Bastler
Beiträge: 670
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 175 Mal
Danksagung erhalten: 90 Mal

Re: Automatische Nummerierung mit mehreren Ebenen

#10

Beitrag von d'r Bastler »

Okay,

die Möglichkeit, das Ganze so zu automatisieren, dass Du mehr als nur drei Ebenen nutzen kannst, hatte ich schon angesprochen.

Jetzt kommt der nächste Schritt: Ich hatte gesagt "Werte in beliebiger Reichenfolge" Leider kann ich mir kein Beispiel vorstellen, in denen die Werte nicht doch hierarchisch sortiert sein sollten: Also kein 2.2 solange es nicht 2 & 2.1 gibt. Das kann man über eine Fehlerfalle abfangen, die vor Nummerierung anhand der gesetzten Leveltexte prüft, ob es hier Unstimmigkeiten gibt. Sinnvoll? :?:

Und noch einer: Im Moment erfolgt die Nummerierung per Aufruf des Makros. Das kann man aber auch über einen Event (was'n das'n!? ;) ) auslösen. Events (Ereignisse) in VBA sind z.B. die Auswahl einer bestimmten Zelle, der Doppelklick in einer bestimmten, oder die Änderung des Inhalts einer Zelle. Für Deinen Fall könnte ich mir einen Doppelklick in Spalte C Beschreibung vorstellen. Sinnvoll? :?:

Lass wissen ;)

Grüße
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Bing [Bot] und 0 Gäste