VBA: Dynamische Gruppierung von Spalten

t04stbr0t

Lieutenant
Registriert
Okt. 2008
Beiträge
958
Hallo,



ich möchte per VBA Code eine automatische dynamische Gruppierung in den Spalten einpflegen.

Beispiel: Spalte A-C; Spalte E-G; Spalte I-J gruppieren
Führe ich den VBA Code nochmal aus möchte ich, die selben Spalten +1 gruppiert haben.

Ist so etwas möglich?

Viele Grüße und danke im voraus!
 
Was passiert denn, wenn die erste Gruppierung A-C zwei mal erweitert werden soll?
Dann gibt es eine Gruppierung A-E und E-I. Oder noch weiter gesponnen bist du dann bei A-H ...

Macht das wirklich Sinn?

Aber ja programmiertechnisch geht das. Du ermittelst die vorhandenen Gruppierung (Spalte XY), löst diese auf und erstellst diese in von Spalte XXX bis XY+1.
 
Ja, ich benötige eine kontinuerliche Erweiterung der Spaltengruppierungen um eine Spalte.

Wie genau ist das denn möglich im VBA Code? Leider habe ich keinen Lösungsansatz. Wäre klasse wenn mir jemand hier helfen könnte.
 
Willst du wirklich die Überschneidung dann haben? Was soll das für einen Sinn machen, wenn du mit einer Gruppierung am Ende 2 bis X Spalten in anderen Gruppierungen bereits verbirgst.
Erkläre mir den Aufbau und stell am besten eine Beispieldatei mir ein paar nachvollziehbaren Daten zur Verfügung, dann schreibe ich dir ein paar Zeilen dazu.
 
Also die Beispieldatei ist angehängt.
Ich arbeite mit Kalenderwochen von 3 Jahren: 2015, 2016, 2017.

Und möchte pro Woche eine Vergleichbarkeit zwischen der selben Kalenderwoche in den 3 Jahren sowie der Gesamt Spalte der 3 Jahre erhalten.

Als Beispiel: Nehmen wir mal an heute wäre die 3te Kalenderwoche 2017.
So soll Excel mir eine Gruppierung vornehmen bei der die 3te Kalenderwoche 2015 angezeigt wird, sowie die restlichen Spalten des Jahres 2015 gruppiert werden. Für 2016 und 2017 dasselbe.

Nehmen wir nun an es ist die 4te Kalenderwoche, dann sollen die alten Gruppierungen entfernt und alle Gruppierungen +1 Kalenderwoche durchgeführt werden. Dafür benötige ich einen VBA Code. Also Kalendergruppierungen +1, oder falls möglich, dass man in ein irgendeine Zelle eine Kalenderwoche eingibt und Excel dann mit einer Tastenkombination bis zu dieser Kalenderwoche die Gruppierungen durchgeführt.

Vielen Dank für die Hilfe im voraus!
Ergänzung ()

Oder einfacheres Beispiel:

Wie lautet der VBA Code für eine Gruppierung +1 Spalte.

Also Gruppierung der Spalte A und B wäre ja:
Columns("A:B").Select
Selection.Columns.Group


Nun ein Befehl das daraus Colums("A bis C") wird, quasi.
Und darauffolgenden "A bis D". Ist das möglich?
 

Anhänge

Ich habe mal eben was mit Hilfe des Makrorekorders zusammengestellt. Für mehr war ich zu faul :p

Ist eher so quick-and-dirty, aber funktioniert mit deinem Beispiel.

Ich bin davon ausgegangen, dass alle Gruppierungen gelöscht und alle Spalten eingeblendet werden können. Am Ende werden die Spalten der neuen Gruppierung dann wieder ausgeblendet.
Code:
Sub Gruppierung_Aendern()
Dim intStart2015 As Integer
Dim intStart2016 As Integer

'Spalte für die erste KW festlegen
intStart2015 = 2
intStart2016 = 14

'Inputbox zur Eingabe der KW
strInbox = InputBox("Bitte Kalenderwoche eingeben")

'bestehende Gruppierung aufheben
Cells.Select
Selection.Columns.Ungroup
Selection.EntireColumn.Hidden = False

'Gruppieren 2015
Range(Columns(intStart2015), Columns(intStart2015 + strInbox - 1)).Select
Selection.Columns.Group

'Gruppieren 2016
Range(Columns(intStart2016), Columns(intStart2016 + strInbox - 1)).Select
Selection.Columns.Group

'Gruppierte Spalten ausblenden
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1

End Sub

Den hässlichen Part mit den Selections kannst du dann ja entsprechend ersetzen ;)
Die Inputbox sollte noch dahingehend abgesichert werden, dass sie nur Integer zulässt.
"Selection.Columns.Ungroup" funktioniert nur, wenn eine Gruppierung vorhanden ist, sonst gibt es einen Fehler. Hier sollte man ggf. auch vorher prüfen, damit das Makro ohne Fehler durchläuft.

Viel Spaß damit :)
 
Zurück
Oben