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