Microsoft Excel

Herbers Excel/VBA-Archiv

Spalten automisch bis zum nächsten Wert gruppiere

Betrifft: Spalten automisch bis zum nächsten Wert gruppiere von: Claudi
Geschrieben am: 10.10.2014 10:32:22

Hallihallo liebe community,

was Makros angeht konnte ich mir mit dem Durchstöbern diverser Foren bisher immer selbst helfen, doch diesmal ist dem leider nicht so.
Mein Problem kommt mir an sich nicht so schwerwiegend vor - entweder habe ich nach falschen Schlagworten gesucht oder ich habe hier was grundlegendes übersehen.
Wie dem auch sei...

Ich habe einen File mit etwa 12000 Datensätzen.

Dabei sind alle Spalten bis Spalte M mit Werten belegt.

In Spalte A (Ebene 1) befindet sich eine Nummerierung: 1.Haus,2.Baum,3.Auto,........25.Boot - alle Zellen, die keine entsprechende Nummerierung enthalten sind leer. D.h. in Spalte A befinden sich lediglich 25 nicht leere Zellen.

In Spalte B (Ebene 2) nun das selbe Spiel nur, dass die Nummerierung hier eine Ebene tiefer geht: 1.1.Hausbad, 1.2.HausKüche, 1.3.HausKeller, 2.1.BaumStamm, ..........., 25.1.BootRuder. Wieder sind alle Zellen die keine Nummerierung haben leer.

In Spalte C (Ebene 3) geht die Nummerierung noch eine Stufe tiefer: 1.1.1.HausBadWaschbecken, 1.1.2.HausBadKlo, ............., 25.1.1BootRuderWelle. Wieder sind alle anderen Zellen leer.

Spalte D enthält ebenfalls eine Nummerierung die eine Ebene tiefer geht - dies ist jedoch für mein Problem nicht mehr relevant.

Was ich nun benötige ist ein Makro, dass In Spalte A alle leeren Zellen unter 1.Haus bis 2.Baum unter 1.Haus gruppiert. Danach sollten alle leeren Zellen unter 2.Baum unter 2.Baum gruppiert werden. uswusf bis 25.Boot.

Ich benötige also ein Makro, dass automatisch alle leeren Zellen unter einem Wert zu diesem oben stehenden Wert gruppiert. Und das für Spalte A,B und C

Ich hoffe mir kann mit dieser Thematik jemand hilfreich zur Seite stehen.

Über Hilfreiche Ansätze würde ich mich sehr freuen.

Vielen Dank im Vorraus

  

Betrifft: AW: Spalten automisch bis zum nächsten Wert grupp von: Daniel
Geschrieben am: 10.10.2014 11:22:09

Hi
probier mal das:

Sub test()
Dim S As Long
Dim rng As Range

For S = 3 To 1 Step -1
    For Each rng In Columns(S).SpecialCells(xlCellTypeBlanks)
        rng.EntireRow.Group
    Next
Next
        

End Sub
Gruß Daniel


  

Betrifft: AW: Spalten automisch bis zum nächsten Wert grupp von: Claudi
Geschrieben am: 10.10.2014 11:51:37

Hallo Daniel,

zunächst natürlich erstmal vielen Dank für deine super schnelle Hilfe!

Ich habe dein Makro ausprobiert - es gibt zumindest erstmal keinen Fehler, aber es tut nur die Hälfte von dem was es tun soll.

In Gruppierung1.jpg (https://www.herber.de/bbs/user/93090.jpg) habe ich das was ich brauche mal händisch gemacht - das ist jedoch für ebene 2 und 3 bei 12000 Datensätzen viel zu viel.

In Gruppierung2.jpg (https://www.herber.de/bbs/user/93091.jpg) habe ich mal einen Screenshot dessen gemacht was passiert wenn ich den Makro laufen lasse...


  

Betrifft: AW: Spalten automisch bis zum nächsten Wert grupp von: Daniel
Geschrieben am: 10.10.2014 12:10:12

HI
mit Screenshots kann ich nicht viel anfangen.
Lade doch bitte die Datei hoch.
es müssen ja nicht alle Zeilen sein, 3-4 Hauptgruppen reichen, halt so dass man versteht, wie die Datei aufgebaut ist und ob es eventuell Sonderfälle gibt die man berücksichtigen muss.

Gruß Daniel


  

Betrifft: AW: Spalten automisch bis zum nächsten Wert grupp von: Claudi
Geschrieben am: 10.10.2014 12:50:09

Vielen Dank

https://www.herber.de/bbs/user/93093.xlsx


  

Betrifft: AW: Spalten automisch bis zum nächsten Wert grupp von: Daniel
Geschrieben am: 10.10.2014 13:34:53

Hi
das Problem ist, das die Leeren Zellen deiner Datei keine Leeren Zellen sind, sondern den Text "Leerstring".
Damit kann man die leeren Zellen nicht seperag greifen.

hier ist nochmal eine Schleife vorgeschaltet, welche die Zellen mit dem Text "Leerstring" in echte Leerzellen wandelt, damit der Folgecode richtig arbeiten kann.

Sub test()
Dim S As Long
Dim rng As Range
With ActiveSheet.UsedRange
    
    For S = 1 To 3
        .Columns(S).Formula = .Columns(S).Value
    Next
    

    For S = 1 To 3 Step 1
    
        For Each rng In Columns(S).SpecialCells(xlCellTypeBlanks).Areas
            rng.EntireRow.Group
        Next
    Next
        
End With
End Sub
Eines solltest du noch in deiner Liste überarbeiten:
es gibt Zeilen, die in Spalte B einen Wert haben und in Spalte C leer sind.
Das ist bei dieser Strukturierung nicht sinnvoll, ein Bereich aus C muss immer eindeutig zu einem Bereich aus B gehören, der darf nicht zu zwei Bereichen aus B gehören.
Um das zu korrigieren kannst du so vorgehen:
1. filtere in Spalte B nach "nicht leer"
2. filtere in Spalte C nach "leer"
3. trage in alle alle sichtbaren Zellen in Spalte B einen Wert ein (das Leerzeichen reicht)

Gruß Daniel


  

Betrifft: AW: Spalten automisch bis zum nächsten Wert grupp von: Claudi
Geschrieben am: 10.10.2014 13:48:32

Hurra!! - perfekt!! - funktioniert!!

Vielen Dank für deine schnelle und vor allem sachkundige Hilfe.

noch eine kleine Anmerkung:

"1. filtere in Spalte B nach "nicht leer"
2. filtere in Spalte C nach "leer"
3. trage in alle alle sichtbaren Zellen in Spalte B einen Wert ein (das Leerzeichen reicht)"

bei 3. meintest du sicherlich Spalte C!?

Viele Grüße


  

Betrifft: AW: Spalten automisch bis zum nächsten Wert grupp von: Daniel
Geschrieben am: 10.10.2014 14:27:01

halt da, wo noch keiner drin steht.
oder die Tabelle gleich richtig aufbauen und konsequent jedem Abschnitt eine Überschrift geben.
Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Spalten automisch bis zum nächsten Wert gruppiere"