Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1052to1056
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro zur Nummerierung mit Ebenen

Makro zur Nummerierung mit Ebenen
27.02.2009 13:56:50
Dennis
Hallo Gemeinde,
ich möchte euch beim Programmieren eines Makros, dass auf den ersten Blick sehr einfach aussieht, um Rat fragen.
Ich habe eine Tabelle mit Baugruppen und Einzelteilen, die aus knapp 40000 Zeilen besteht und diversen Spalten. In dieser Tabelle stehen in der Zeile A Zahlen von 1 bis 15. Diese Zahlen spiegeln eine Ebene wieder, also Zahl1 = Oberbaugruppe, Zahl 2 = Baugruppe unter der Oberbaugruppe 1... Zahl 7 (z.B.) = Einzelteil von Baugruppe 6.
Kann man sich vereinfacht so vorstellen (BG = Baugruppe, ET = Einzelteil):
1 (BG)
-2 (BG)
--3 (ET)
--3 (BG)
---4 (ET)
--3 (BG)
---4 (ET)
-2 (BG)
--3 (ET)
1 (BG)
In Excel sieht die Spalte A dann aber nur folgendermaßen aus:
1
2
3
3
4
3
4
2
3
1
Diese Ebenen sind sehr wichtig, da ich nur so die Einzelteile einer Baugruppe zusortieren kann bzw. schauen kann, in welcher Baugruppe ein Einzelteil vorkommt.
Wenn ich diese Tabelle jetzt nach irgendeinem Wert in einer Spalte sortiere (z.B. nach Spalte B - Name), ist die vorhandene Sortierung nach den Ebenen weg. Problem ist, dass ich keine Möglichkeit habe in dieser Tabelle die Sortierung nach den Ebenen wieder herzustellen.
Deswegen habe ich mir überlegt, dass in Spalte B eine Nummerierung sinnvoll wäre, um später diesen "Ebenenzustand" wieder herzustellen.
Das soll dann wie folgt aussehen:
A B
1 1.0.0.0
2 1.1.0.0
3 1.1.1.0
3 1.1.2.0
4 1.1.2.1
3 1.1.3.0
4 1.1.3.1
2 1.2.0.0
3 1.2.1.0
1 2.0.0.0
Mit einer solchen Spalte B könnte ich anschließend wieder sortieren. Nun kommen wir zu meinem VBA-Problem.
Ich hatte den Gedanken, dass man ein Makro schreibt, dass Zelle B2 in B3 kopiert, wenn in A3 etwas steht (kein Problem). Dann soll er in A3 schauen, welche Zahl dort steht. Diese Zahl spiegelt die Stelle in der Sortierung (Spalte B) wieder, die verändert werden soll.
Beipiel:
Wenn in A3 eine 2 steht, soll er zuerst B2 in B3 kopieren. Dann steht in B3 1.0.0.0. Dieser Wert muss nun verändert werden (+1), aber eben an Stelle 2 (Wert aus A3). Er soll also den Wert 1.0.0.0 in 1.1.0.0 verändern.
Dazu habe ich jetzt ein paar Fragen:
1) Geht soetwas überhaupt?
2) Wenn ja, wie kann ich den Wert in der "Sortierspalte" verändern?
3) Sofern das auch geht, wie schaffe ich es, dass bei einem Rücksprung von Ebene 3 auf 2 die Zahl an dritter Stelle wieder eine 0 wird (aus 1.1.3 muss dann ja 1.2.0 werden)
4) Hat jemand eine bessere Idee zum Sortieren? ;o)
Ich hoffe, ich konnte mein Problem einigermaßen schildern, und jemand weiß um Rat. Irgendwo in diesem Sortierkram bin ich mit meinen VBA Kenntnissen an meine Grenzen gestoßen.
MFG Dennis

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Originalreihenfolge sichern mit Funktion ZEILE
27.02.2009 14:32:02
Daniel
Hi
zu 4)
wenn es dir nur darum geht, die Original-Reihenfolge zu erhalten bzw nach umsortierungen wieder Herstellen zu können, dann füge doch einfach eine Hilfsspalte mit der Original-Zeilen-Nr. ein mit der Formel: "=Zeile()"
anschließend die Formeln durch KOPIEREN - INHALTE EINFÜGEN - WERTE fixieren.
mit dieser Hilfsspalte kannst du immer wieder die Original-Reihenfolge herstellen.
als Makro:

With range("X1:X40000")
.Formula="=Row()"
.formula = .Value
End with


ansonsten würde mir dieses System mit Hilfsspalten einfallen.
auch dieses müsste nach dem Einfügen mit der oben beschriebenen Systematik fixiert werden.
da es aber für alle Zellen die gleiche Formel ist, sollte auch das Einfügen per Makro kein Problem sein.
allerdings darf bei deiner Nummernsystematik kein Nummer grösser als 9 Rauskommen (dh. keine Baugruppe darf mehr als 9 Unterbaugruppen oder Einzelteile haben), sonst müsstest du die Nummerierung in dem Stil aufbauen: "01.12.03.25", damit die Sortierung anschließend korrket funktioniert.
https://www.herber.de/bbs/user/59853.xls
Gruß, Daniel

Anzeige
AW: Originalreihenfolge sichern mit Funktion ZEILE
27.02.2009 14:41:59
Dennis
Danke, Mann!!!
Wenn ich jetzt schwul wäre, würde ich dich knutschen ;o) So darfst du dich virtuell so richtig gedrückt fühlen :o)
Das mit den Hilfsspalten ist genial! Es kann manchmal so einfach sein, wenn man nicht gleich von Schritt 3 vor Schritt 2 machen will.
Nochmals vielen Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige