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

einfache Gruppierung per VBA

einfache Gruppierung per VBA
16.09.2022 18:50:03
Stephan
Hallo zusammen,
such eine einfache Grupierungsmöglichkeit mit VBA.
Hier meine Beispieldatei mit Arbeitsblatt vorher und nachher.
die Spalte auf welche sich die Gruppierung bezieht, sowie die komplette Range soll frei definierbar sein.
Prozess:
1.) Sortierung der Spalte 3
2.) Gruppierung der Spalte 3, hierbei sollen die Gruppen in der Spalte 4 in einer neu einzufügenden Zeile (Gruppenkopf) dargestellt werden.
Vielleicht gibt es aber auch ein wesentlich bessere Funktion oder Darstellung.
Muss eben eine bestimmte Spalte in der mehrfach Werte vorkommen gruppieren, damit ich diese Ergebnisspalte (Gruppenköpfe) weiterverarbeite (Past&Copy) kann.
Die Gruppenkopfe können auch woanderst angezeigt werden, wichtig ist eben auch das wiederherstellen der vorherigen Daten, also im Beispiel das löschen der Zeilen mit Inhalte in Spalte 4.
Ich hoffe ich konnte mich verständlich ausdrücken....
Gruße
Stephan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: einfache Gruppierung per VBA
16.09.2022 18:55:30
Daniel
Hi
Wenn du hier eine Datei hochlädst, dann musst du auch den Link, der dir gezeigt wird kopieren und in den Beitrag einfügen, das geht nicht automatisch.
Lass bitte vor und nach dem Link immer ein Leerzeichen oder schreibe ihn in eine eigene Zeile.
Gruß Daniel
AW: einfache Gruppierung per VBA
16.09.2022 22:05:52
GerdL
Hallo Stephan,
ein Ansatz.

Sub Unit()
Dim R As Range
Dim z As Long
With Tabelle1
.Rows(2).AutoFilter
.UsedRange.Offset(2).Sort key1:=Cells(3, 3)
For z = .Cells(.Rows.Count, 3).End(xlUp).Row - 1 To 3 Step -1
If Cells(z, 3)  Cells(z + 1, 3) Then Rows(z + 1).Insert shift:=xlDown
Next
For Each R In .Columns(3).SpecialCells(xlCellTypeConstants).Areas
R.Cells(R.Rows.Count + 1, 2) = R.Cells(R.Rows.Count, 1)
Next
For Each R In .Columns(4).SpecialCells(xlCellTypeConstants).Areas
R.EntireRow.Group
Next
End With
End Sub
Gruß Gerd
Anzeige
AW: einfache Gruppierung per VBA
17.09.2022 13:56:27
Stephan
Hallo Gerd,
fast Perfekt bis zu diesem Abschnitt:

For Each R In .Columns(3).SpecialCells(xlCellTypeConstants).Areas
R.Cells(R.Rows.Count + 1, 2) = R.Cells(R.Rows.Count, 1)
Next
For Each R In .Columns(4).SpecialCells(xlCellTypeConstants).Areas
R.EntireRow.Group
Next
Hier wird nicht wie gewünscht gruppiert. Beim einklappen der Gruppen 1 sollen nur die Werte der Spalte 4 angezeigt werden, da diese nicht Inhalt der Gruppe 1 sind. Siehe mein Beispielsblatt "nachher"
Alles andere passt.
Gruß Stephan
AW: einfache Gruppierung per VBA
17.09.2022 21:21:30
GerdL
Hallo Stephan,
so?

Sub Unit()
Dim R As Range
Dim z As Long
With Tabelle1
.Rows(2).AutoFilter
.UsedRange.Offset(2).Sort key1:=Cells(3, 3)
For z = .Cells(.Rows.Count, 3).End(xlUp).Row - 1 To 3 Step -1
If Cells(z, 3)  Cells(z + 1, 3) Then Rows(z + 1).Insert shift:=xlDown
Next
For Each R In .Columns(3).SpecialCells(xlCellTypeConstants).Areas
R.Cells(R.Rows.Count + 1, 2) = R.Cells(R.Rows.Count, 1)
Next
.Columns(4).SpecialCells(xlCellTypeBlanks).Areas(1).EntireRow.Group
For z = 2 To .Columns(3).SpecialCells(xlCellTypeConstants).Areas.Count
.Columns(3).SpecialCells(xlCellTypeConstants).Areas(z).EntireRow.Group
Next
End With
End Sub
Gruß Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige