Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1344to1348
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

VBA Zeilen mit bestimmtem Inhalt gruppieren

VBA Zeilen mit bestimmtem Inhalt gruppieren
08.01.2014 22:17:00
Judith
Hallo zusammen,
ich stehe wieder einmal vor einem Problem, bei dem ich einfach nicht weiterkomme. Ich habe in meinem Tabellenblatt in Spalte C alle meine SAP Accounts stehen, wobei ich einige Zwischensummen habe.
Siehe Beispiel:
https://www.herber.de/bbs/user/88730.xlsx
Nun möchte ich alle Zeilen, die sich zwischen den Zwischensummen befinden, gruppieren.
https://www.herber.de/bbs/user/88731.xlsx
Hat jemand von euch eine Idee wie das funktionieren könnte?
Vielen Dank im Voraus !
Viele Grüsse Judith

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachfrage
09.01.2014 10:25:58
Bastian
Hallo Judith,
in Deinem Beispiel gibt es drei Zwischensummen, aber nur zwei Gruppierungen.
Fehlt da dann nicht eine Gruppe?
Und sind die Zwischensummen oberhalb oder unterhalb der Gruppe?
Gruß, Bastian

AW: VBA Zeilen mit bestimmtem Inhalt gruppieren
09.01.2014 13:52:10
Judith
Hallo Bastian,
sorry für die Verwirrung. Für das Beispiel habe ich einen Screenshot aus einer größeren Datei gemacht und dabei nicht genau aufgepasst. Die zu gruppierenden Daten befinden sich immer oberhalb der jeweiligen Zwischensumme.
Also quasi wie hier dargestellt:
https://www.herber.de/bbs/user/88741.xlsx
Viele Grüße
Judith

Anzeige
AW: VBA Zeilen mit bestimmtem Inhalt gruppieren
09.01.2014 14:10:46
Bastian
Hallo Judith,
versuch mal folgenden Code:
Gruß, Bastian

Option Explicit
Option Base 1
Sub Gruppieren()
Dim lngEZeile As Long
Dim lngLZeile As Long
Dim rngRange As Range
Dim varRowZwischenSummen() As Variant
Dim intAnzZwischenSummen As Integer
Dim rngZelle As Range
Dim i As Integer
intAnzZwischenSummen = 0
With ActiveSheet
' Erste und letzte Zeile ermitteln
lngEZeile = .Cells(1, 3).End(xlDown).Row + 1  ' +1, da über den Daten "HEADER" steht
lngLZeile = .Cells(Rows.Count, 3).End(xlUp).Row
' Bereich festlegen
Set rngRange = .Range(.Cells(lngEZeile, 3), .Cells(lngLZeile, 3))
' Positionen der Zwischensummen ermitteln
For Each rngZelle In rngRange
If rngZelle.Value Like "*TOTAL*" Then
intAnzZwischenSummen = intAnzZwischenSummen + 1
ReDim Preserve varRowZwischenSummen(intAnzZwischenSummen)
varRowZwischenSummen(intAnzZwischenSummen) = rngZelle.Row
End If
Next rngZelle
' Gruppieren 1. Gruppe
Rows(lngEZeile & ":" & varRowZwischenSummen(1) - 1).Rows.Group
' Gruppieren restliche Gruppen (zwischen zwei Summen)
For i = 1 To intAnzZwischenSummen - 1
Rows(varRowZwischenSummen(i) + 1 & ":" & varRowZwischenSummen(i + 1) - 1).Rows.Group
Next i
End With
End Sub

Anzeige
AW: VBA Zeilen mit bestimmtem Inhalt gruppieren
09.01.2014 14:52:33
Judith
Hallo Bastian,
vielen Dank! Deine Lösung funktioniert super. Vielen Dank vor allem auch für die Erklärungen, das hilft definitiv das Makro zu verstehen.Eine Frage habe ich allerdings: ReDim Preserve Habe ich noch nie gesehen. Kannst du mir vielleicht kurz erklären, was dieser Befehl macht?
Viele Grüße
Judith

ReDim Preserve
09.01.2014 14:57:58
Rudi
Hallo,
dimensioniert ein Array neu und behält die bisherigen Werte.
Es ist nur die letzte Dimension änderbar.
Gruß
Rudi

AW: VBA Zeilen mit bestimmtem Inhalt gruppieren
09.01.2014 15:05:42
Judith
Vielen Dank Rudi !

AW: VBA Zeilen mit bestimmtem Inhalt gruppieren
09.01.2014 15:12:45
Bastian
Hallo Judith,
"ReDim" dimensioniert die Array-Variable "varRowZwischenSummen" neu (da ich ja am Anfang noch nicht weiß, wieviele Zwischensummen es gibt und wieviele Datenfelder gebraucht werden). Bei jedem Fund einer Zwischensumme über das Suchwort "*TOTAL*" bekommt die Variable also ein Datenfeld dazu, in der dann die Zeilennummer abgelegt wird.
Die Option "Preserve" bewirkt, dass die bereits enthaltenen Daten in der Array-Variablen erhalten bleiben.
Wenn die Schleife durchgelaufen ist, enthält die Variable "varRowZwischenSummen" alle Zeilennummern der Zwischensummen (kannst Du leicht im Lokalfenster nachvollziehen).
Gruß, Bastian
Anzeige

331 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige