Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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

Hilfe zu Makro-Gruppieren

Hilfe zu Makro-Gruppieren
21.01.2019 10:31:09
Ursel
Hallo!
Ich benötige bitte Hilfe zu einem Makro.
Habe eine Liste mit zahlreichen Daten (ca. 1500 Zeilen) uns verschiedenen Indizes.
1
1.1
1.1.1
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.7
1.1.8
1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.11
1.2.12
1.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
1.3.7
…
25
25.1
25.1.1.
usw.
Der Index steht jeweils in Zelle C10, in Zelle B10 habe ich eine Formel:
=TEXT("00"&C10;"000") - diese dient weiterführend für nachstehendes Makro zum Erstellen von automatischen Gruppierungen.
Es erstellt aufgrund von Textlängen Untergruppen (3 Ebenen: 1, 1.1, 1.1.1 usw., Blatt ist vorher schreibgeschützt und soll es nachher auch wieder sein):
Sub Makro_Gruppieren() 'Makro für automatische Gruppierung
ActiveSheet.Unprotect
Columns("B:B").Select
Selection.Copy
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:A").Select
Selection.ClearOutline
Range("A10").Select
Dim Zelle As Range
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle.Value) >= 5 Then Zelle.EntireRow.Group
Next
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle.Value) >= 7 Then Zelle.EntireRow.Group
Next
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True
End Sub
Mein Problem ist nun, dass immer die letzte Untergruppe der Ebene 3 (zB 1.1.8, 1.2.12, 1.3.7) nicht gruppiert wird. und wenn ich zusätzlich eingebe:
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle.Value) Next
dann sind zwar die Untergruppen korrekt, ich kann aber nicht mehr in Ebene 1 gliedern (nur Ebene 2 und 3).
Kann mir jemand helfen?
Gerne schicke ich auch eine Probe-Datei, wo man das Vorgehen sieht.
DANKE schon im Voraus!!!!
Gruß Ursel

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe zu Makro-Gruppieren
21.01.2019 10:48:22
Daniel
Hi
wenn du zuverlässig ermitteln willst, wieviele Gruppierungsschritte in jeder Zeile durchzuführen sind, solltest du nicht die Länge der Zeichenkette verwenden, denn diese ist ja variabel und ändert sich auch damit, ob die GruppenIndizes jetzt ein- oder zweistellig sind und nicht nur über die Ebne
ich würde die Anzahl der Punkte in der Zelle verwenden, damit kannst du die jeweilige Ebene eindeutig bestimmen:
- kein Punkt: Ebene 1
- ein Punkt: Ebne 2
- zwei Punkte: Ebene 3
die Anzahl der Punkte kannst du mit dieser Formel ermitteln:
=Len(Zelle) - Len(Replace(Zelle, ".", ""))

Gruß Daniel
Anzeige
AW: Hilfe zu Makro-Gruppieren
21.01.2019 11:32:36
Ursel
Hallo, danke für die Antwort.
Hab's natürlich nicht gecheckt.
Mein Index steht jetzt in Zelle B10 (der erste).
Ich mach aber was falsch:
Sub Makro_Gruppieren() 'Makro f?r automatische Gruppierung
ActiveSheet.Unprotect
Range("b10").Select
Dim Zelle As Range
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle) - Len(Replace(Zelle, ".", "")) = 1 Then Zelle.EntireRow.Group
Next
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle) - Len(Replace(Zelle, ".", "")) = 2 Then Zelle.EntireRow.Group
Next
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle) - Len(Replace(Zelle, ".", "")) = 3 Then Zelle.EntireRow.Group
Next
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True
End Sub
Für Hilfe wäre ich dankbar und entschuldige mich zum wiederholten Mal für das Crossposting, das Ergebnis werde ich dann in alle Foren stellen.
Ursel
Anzeige
AW: Hilfe zu Makro-Gruppieren
21.01.2019 11:57:53
Daniel
naja, hier wird jede Zeile immer nur einmal gruppiert.
die Zeilen der Ebene 3 müssen aber 3x gruppiert werden.
schau dir dein altes Makro, in welchem du die Längen für die Prüfung verwendet hast, nochmal genau an.
vielleicht fällt dir ja ein Unterschied auf.
Gruß Daniel
AW: Hilfe zu Makro-Gruppieren
21.01.2019 12:26:36
Ursel
Hallo Daniel,
danke für Deine wiederholte Antwort.
Ich finde den Fehler leider selbst nicht.
Mir wäre sehr geholfen, wenn Du als "Profi" mir den Code schicken könntest, der funktioniert, falls das nicht zu viel verlangt ist. Bin nicht so versiert im Umgang mit VBA.
Falls Du mir helfen kannst und willst, hier noch die Testdatei:
https://www.herber.de/bbs/user/126965.zip
Danke, Ursel
Anzeige
AW: Hilfe zu Makro-Gruppieren
21.01.2019 12:48:56
Daniel
das ist dein alter Code. Ich habe das relevante mal unterstrichen.
   For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle.Value) >= 5 Then Zelle.EntireRow.Group
Next
For Each Zelle In Columns(1).SpecialCells(xlCellTypeConstants)
If Len(Zelle.Value) >= 7 Then Zelle.EntireRow.Group
Next
damit sorgst du dafür, dass alle Zeilen mit 7 oder mehr Zeichen 2x gruppiert werden, nämlich einmal in der ersten Schleife und das zweite mal in der zweiten Schleife.
genauso musst du vorgehen, wenn du nicht die Zeichenlänge, sondern die Anzahl der Punkte verwendest.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige