Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Makro für Zeilen-Gruppierung(mit Schleife)

Forumthread: Makro für Zeilen-Gruppierung(mit Schleife)

Makro für Zeilen-Gruppierung(mit Schleife)
04.12.2024 17:15:44
Exceleration
Hallo,

ich möchte in einer Liste mittels Makro(das am Besten startet wenn man die Datei öffnet) Zeilen Gruppieren. Das Makro müsste allerdings erkennen, welche Zeilen ich genau gruppiert haben will.

Beispieldatei:
https://www.herber.de/bbs/user/173998.xlsm

Es geht um eine Übersicht der Abteilung(Spalte B), Teams(C) und Stellen(D) in einer Firma. Diese 3 Werte habe ich in einer "Key Spalte"(A) zusammengefasst.
Unterhalb der jeweiligen Stelle möchte ich die Personen(D) inkl. Personalnummer(C) auflisten, die auf einer derartigen Stelle sitzen.

Es kann sein, dass Stellen nicht besetzt sind(also keine Zeile darunter), das eine Person auf einer Stelle sitzt oder es mehrere Personen gibt, die Stellen mit der selben Bezeichnung besetzen.

Diese Personen-Zeile möchte ich aber mittels Gruppierung ausblenden, sodass man diese optional einblenden kann, wenn man die Personen hinter den Stellen sehen will.


Anbei findet ihr ein Excel mit dem Tabellenblatt der einfachen Liste("Rohdaten") und wie die Gliederung zB. aussehen sollte("Wunsch").
Es müssen immer alle untereinanderliegenden Zeilen mit Mitarbeiterdaten(also wo die Spalte B leer ist, bzw. in Spalte C ein numerischer Wert steht) gruppiert werden. Dadurch dass Mitarbeiter neu dazukommen oder gekündigt werden können oder sich Stellen ändern, kann ich es nicht statisch(zB. [a1:a10].Rows.Group) programmieren.

In Summe sind es mehrere tausend Zeilen und ich hoffe diese mittels VBA-Schleife sinnvoll gruppieren zu können. Ich könnte auch noch "Hilfspalten" einfügen, falls das für ein mögliches Makro hilfreich ist.


Vielen Dank und beste Grüße
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für Zeilen-Gruppierung(mit Schleife)
04.12.2024 17:37:32
emkases
Hallo,


dasselbe erreichst du mit einer einfachen Formel und dem Autofilter

btw. es ist nicht gut, unterschiedliche Datentypen in einer Spalte zu haben, wie du in Spalte C

Wenn deine Personalnummer, wie in der Beispieldatei, vom Datentyp Zahl ist und die anderen Einträge TEXT, erhälst du mit =isttext(c2) in einer Hilfsspalte( die du ja auch ausblenden kannst) für die Mitarbeiter das Ergebnis falsch. Mit dem Autofilter filterst du dann nach WAHR und gut is!

Viele Grüsse
Anzeige
AW: Makro für Zeilen-Gruppierung(mit Schleife)
04.12.2024 20:47:41
emkaes
Hallo,

ok, verstanden.

Probiere mal folgendes Makro



Sub createGroups()
Dim rg As Range, i As Long, z As Long
Dim erste As Long, letzte As Long
Set rg = Worksheets("Rohdaten").Range("A1").CurrentRegion

With rg
.ClearOutline
i = 2
Do While i = .Rows.Count
If Len(.Cells(i, 2)) = 0 Then
erste = i
z = i
Do While Len(.Cells(z, 2)) = 0 And z = .Rows.Count
z = z + 1
Loop
.Rows(erste & ":" & z - 1).Group
i = z - 1
z = 0
erste = 0
End If
i = i + 1
Loop
Worksheets("Rohdaten").Outline.ShowLevels RowLevels:=1
End With

End Sub


Viele Grüsse
Anzeige
AW: Makro für Zeilen-Gruppierung(mit Schleife)
04.12.2024 21:20:47
Uduuh
Hallo,
Sub gruppieren()

Dim lR As Long, lF As Long, lL As Long

Application.ScreenUpdating = False

With ActiveSheet
.Rows.ClearOutline
.Outline.SummaryRow = xlAbove
End With

For lR = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(lR, 2) = "" Then
If lF = 0 Then
lF = lR: lL = lR
Else
lL = lL + 1
End If
Else
If lF Then
Range(Rows(lF), Rows(lL)).Group
lF = 0: lL = 0
End If
End If
Next lR

If lF Then
Range(Rows(lF), Rows(lL)).Group
End If

ActiveSheet.Outline.ShowLevels RowLevels:=1

End Sub
Anzeige
AW: Makro für Zeilen-Gruppierung(mit Schleife)
04.12.2024 17:44:14
Excelero
Danke für deine Nachricht.

Grundsätzlich sollten die Zeilen mit den Mitarbeitern ausgeblendet sein und bei Bedarf kann man dann einzelnen Stellen (über die Gruppierungsfunktion) aufklappen um zu sehen welche Mitarbeiter dahinterstehen.

Mit Autofiltern habe ich immer alle Mitarbeiter-Zeilen aus- oder eingeblendet, was nicht zielführend ist.

Beste Grüße
Anzeige

Forumthreads zu verwandten Themen

Anzeige