lonestarstate01

Excel Zeilen automatisch gruppieren (Makro)

Hallo zusammen,

ich komme bei folgendem Problem in Excel einfach nicht weiter und wäre für jede Hilfe dankbar.

Ich habe eine Tabelle (siehe Bild) in der unterschiedliche Testpersonen mit einigen Merkmalen aufgelistet werden.
Jeweils darunter sind für jede der Testpersonen die Tage 1-13 aufgelistet.
Nun würde ich gerne die Tage so gruppieren, dass man bei ausblenden aller Gruppierungen nur die Liste der Personen sieht. (wie zwischen den ersten beiden Beispielen zu sehen)
Da die Liste über 2000 Testpersonen umfasst bin ich auf der Suche nach einer Möglichkeit, dass die Zeilen "Tag 1 - Tag 13" jeweils automatisch gruppiert werden.
Gibt es dafür möglicherweise eine Lösung? (vllt via Makro?!)

7ad306b5c82e2792bc5014f6765aebc0



Vielen Dank im Voraus!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 247199

Url: https://administrator.de/forum/excel-zeilen-automatisch-gruppieren-makro-247199.html

Ausgedruckt am: 30.06.2025 um 11:06 Uhr

colinardo
Lösung colinardo 22.08.2014, aktualisiert am 23.08.2014 um 10:46:43 Uhr
Goto Top
Hallo LoneStarState01, Willkommen auf Administrator.de!
Hier eine Lösung deiner Aufgabe via Makro / und für den Fall das noch was unklar ist, das Demo-Sheet dazu.
Sub GroupRows()
    On Error Resume Next
    Dim ws As Worksheet, rngNames As Range, cell As Range, f As Range, firstAddress

    'Arbeistblatt festlegen  
    Set ws = ActiveSheet

    'Gruppierungsrange festlegen  
    Set rngNames = ws.Range("A1", ws.Cells(Rows.Count, 1).End(xlUp))  

    'Gruppierung aus dem Bereich vorher entfernen, für den Fall das das Makro später wiederholt werden soll  
    ws.Outline.ShowLevels RowLevels:=2
    rngNames.Rows.Ungroup

    ' Im Bereich nach 'Tag 1' suchen und Zellen gruppieren  
    With rngNames
        Set f = .Find("Tag 1", LookIn:=xlValues, Lookat:=xlWhole)  
        If Not f Is Nothing Then
            firstAddress = f.Address
            Do
                f.Resize(13).Rows.Group
                Set f = .FindNext(f)
            Loop While Not f Is Nothing And f.Address <> firstAddress
        End If
    End With

    ' den + Button für das Öffnen und Schließen der Gruppierung nach oben setzen  
    ws.Outline.SummaryRow = xlAbove

    ' Alle Gruppen reduziert anzeigen  
    ws.Outline.ShowLevels RowLevels:=1
End Sub
Grüße Uwe.
LoneStarState01
LoneStarState01 22.08.2014 um 22:08:54 Uhr
Goto Top
Vielen vielen Dank!
Klappt hervorragend und hat mir viel Arbeit erspart.

Gruß,
Felix
creich
creich 26.11.2021 um 12:40:40 Uhr
Goto Top
Hallo colinardo,

ich stehe gerade vor einem ähnlichen Problem und komme leider aufgrund meiner dürftigen Programmierkenntnisse nicht weiter.

Im Anhang habe ich eine Beispieldatei erstellt und diese manuell zur Ansicht gruppiert.
Würde dies jedoch gerne bei verschiedenen Dateien als Makro einfügen.

Vielen Dank im Voraus!!

Gruß,

Christoph
group
colinardo
colinardo 26.11.2021 aktualisiert um 15:52:18 Uhr
Goto Top
Servus Christoph, willkommen auf Administrator.de!

Eigentlich wäre das einen neuen Thread wert, aber da machen wir mal eine Ausnahme face-wink.

Habe dir hier mal ein Demo-Sheet zum Download bereit gestellt


back-to-topAusgangslage

screenshot

back-to-topNach Anwendung des Makros

screenshot

Grüße Uwe
creich
creich 26.11.2021 um 16:14:45 Uhr
Goto Top
Vielen Dank Uwe!
Werde nächstes Mal einen eigenen Thread eröffnen face-smile

Ich hätte hierbei noch eine kurze Frage:

Bei der "richtigen" Excel-Datei habe ich mehrere Spalten.
Die Spalten, welche für die Gruppierung relevant sind wären jedoch immer fixiert als M,N,O und P-Spalte.

Wie kann ich bei deinem Programm die Spalten der Range somit am Besten festlegen?

Grüße, Christoph
colinardo
colinardo 26.11.2021 aktualisiert um 16:31:27 Uhr
Goto Top
Zitat von @creich:
Ich hätte hierbei noch eine kurze Frage:

Bei der "richtigen" Excel-Datei habe ich mehrere Spalten.
Die Spalten, welche für die Gruppierung relevant sind wären jedoch immer fixiert als M,N,O und P-Spalte.

Wie kann ich bei deinem Programm die Spalten der Range somit am Besten festlegen?
Habe dir im Link den du bereits per Mail bekommen hast das Dokument erweitert um eine weitere Tabelle (Example 2) mit einem Beispiel dafür. Im Code kannst du dann die Überschriften des jeweiligen ListObjects angeben.

Grüße Uwe
creich
creich 26.11.2021 um 16:37:22 Uhr
Goto Top
Super!

Besten Dank!!

Gruß Christoph