Office: automatische Gruppierung und Gliederung in Excel per VBA

Helfe beim Thema automatische Gruppierung und Gliederung in Excel per VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich bin gerade dabei ein Makro zur automatischen Gruppierung zu schreiben. Ich habe viele Tabellen mit der gleiche Strukturen und einfach keine... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von User, 26. Dezember 2009.

  1. automatische Gruppierung und Gliederung in Excel per VBA


    Hallo,
    ich bin gerade dabei ein Makro zur automatischen Gruppierung zu schreiben. Ich habe viele Tabellen mit der gleiche Strukturen und einfach keine Lust mehr das per Hand zu machen.
    So sieht z.B. die Struktur der Daten aus: Ich habe eine Oberposition und darunter fügen sich entsprechende Unterpositionen ein. Die Unterpositionen sollen nun bis zur tiefst möglichen Stufe immer gruppiert werden (soweit wie möglich, wenn keine Gruppierung mehr möglich ist - soweit ich das festgestellt habe gibt es 8 Ebenen - dann sollen die untersten Ebenen nicht mehr gruppiert werden).
    Nur mal kurz angedeutet, wie ein Tabellenblatt aussieht:

    Code:
    Haustiere
    Hunde
    Tierheim Ost
    Futter
    Trockenfutter
    Nassfutter
    Frischfutter
    sonstiges
    Hundeleinen
    Näpfe
    Boxen
    Tierheim Nord
    Tierheim West
    Katzen
    Tierheim Ost
    Futter
    Trockenfutter
    Katzenmilch
    Nassfutter
    Frischfutter
    sonstiges
    Näpfe
    Kratzbäume
    Tierheim Nord
    Futter
    Tierheim West
    Futter
    Trockenfutter
    Nassfutter
    Frischfutter
    Meerschweinchen
    Tierheim Ost
    Futter
    Trockenfutter
    Nassfutter
    Frischfutter
    sonstiges
    Näpfe
    Käfige
    Tierheim Nord
    Tierheim West
    Futter
    usw.

    Also die Unterpositionen sind immer wieder anders (mal mehr mal weniger). Das einzige was immer identisch ist, sind die Einrückungen, denn jede Unterposition fängt 3 Leerzeichen hinter der Überpositon an.
    Ein bisschen hab ich schon am Code gebastelt, es fehlt aber v.a. noch die Prüfung, was wie eingerückt werden soll. Das wollte ich eben durch Zählen der vorangehenden Leerzeichen machen. Im Moment gruppiert mir der Code immerhin schon die Gesamtposition ab einer bestimmten Sartzelle bis zum Ende der verwendeten Zeilen.
    Könnt ihr mir da irgendwie weiterhelfen?
    Code:

    Sub Gliederung()

    Dim rngStart As Range
    Dim rngZelle As Range
    Dim lnglast As Long

    On Error Resume Next
    Set rngStart = Application.InputBox("Wähle die Startzeile aus (ab dieser Zeile beginnt die Gruppierung):", "Automatische Gruppierung starten", Type:=8)
    On Error GoTo 0

    If rngStart Is Nothing Then Exit Sub


    lnglast = Cells(Rows.Count, rngStart.Column).End(xlUp).Row
    For Each rngZelle In Range(rngStart, Cells(lnglast, rngStart.Column))

    rngZelle.Select

    Selection.Rows.Group
    With ActiveSheet.Outline
    .AutomaticStyles = False
    .SummaryRow = xlAbove
    .SummaryColumn = xlRight
    End With

    Next

    End Sub


    Danke!

    :)
     
  2. so ists gemeint:
    Code:
     
  3. Moin, martinii,

    das Einrücken kann per VBA über IndentLevel geregelt werden (geht AFAIR von 0 bis 15) - eine Lösung ohne VBA würde die Zuweisung der Ebenen inklusive der Einrückungen an Formatvorlagen sein, die dann den einzelnen Zellen zugewiesen werden (ggf. die Box mit in die Symbolleisten aufnehmen). Eine Änderung der Stufungsebene wirkt dann auf alle Zellen, auf die die Formatvorlage angewandt wurde (und dies kann ggf. auch auf diskontinuierliche Bereiche geschehen).
     
  4. automatische Gruppierung und Gliederung in Excel per VBA

    Hallo,
    erstmal Danke für deine Antwort.
    Indentlevel verschiebt ja Positionen ohne dabei weitere Zeichen einzufügen.
    Man kann das z.b. ganz leicht mit dem folgenden Code testen:

    Sub indent()

    With Range("A1")
    .IndentLevel = 2
    End With

    End Sub

    Allerdings sind die Positionen bei mir bereits "fertig" und eben nur per Leerzeichen eingerückt.
    Kann man denn eine Funktion basteln, die erkennt, wie weit was eingerückt ist und das dann gruppieren?
     
  5. Moin, martinii,

    rein funktional würde eine Schleife über den Text (nicht Value) der Zelle mit der Prüfung, ob es sich um Chr(32) handelt, reichen - man könnte dies auch zusammenfassen und das erste Zeichen im Text per InStr suchen, nachdem man per TRIM die führenden Leerzeichen gelöscht hat:

    Code:
    Dies zeigt dann die Zahl der Leerzeichen im Direktfenster an, während InStr die erste Position des gesuchten Zeichens im Text angeben würde.
     
  6. Vielen Dank jinx, das hilft schon wieder mal etwas weiter. ICh habe den Code jetzt immerhin schon soweit geschrieben, dass die Prüfung jede Zeile prüft und dann die entsprechende If Bedingung ausgeführt wird. Nur ist es immo noch so, dass einfach nur eine einzelne Gruppierung Schrittweise aufgebaut wird. Man sieht das auch schö an dem Debug Print, wenn im Eigenachften fenstern nach und nach die Zahl der Leerzeichen geschrieben wird (ich hab das einfach mal als kleine Kontrolle drin gelassen).
    Der Code "kapiert" aber noch nicht, dass er jeweils einzelne Gruppierungen/Untergruppierungen machen soll:

    Code:
     
Thema:

automatische Gruppierung und Gliederung in Excel per VBA

Die Seite wird geladen...
  1. automatische Gruppierung und Gliederung in Excel per VBA - Similar Threads - automatische Gruppierung Gliederung

  2. gezielt Daten aufzählen und zuordnen

    in Microsoft Excel Hilfe
    gezielt Daten aufzählen und zuordnen: Hallo, ich hab schon wieder ein Problemchen. Ich habe eine Tabelle (siehe Anhang) auf der unter "Eingabe" jeder Person bestimmte Tätigkeiten zugeordnet werden. Dabei werden nur die Tätigkeiten,...
  3. Links auf Dateien automatisch als Links formatieren

    in Microsoft Word Hilfe
    Links auf Dateien automatisch als Links formatieren: Hallo, wenn ich eine URL in ein Word-Dokument kopiere, erkennt Word das autmatisch und generiert einen anklickbaren Linke. Verlinke ich aber auf .msg-Dateien auf meiner Festplatte, funktioniert...
  4. Werte automatisch übernehmen

    in Microsoft Access Hilfe
    Werte automatisch übernehmen: Hallo, ich habe schon wieder ein Problem bei dem ich eure Hilfe brauchen könnte. Vereinfacht dargestellt möchte ich einen Wert aus einer Tabelle automatisch in eine andere Tabelle speichern. Ich...
  5. Automatisches Ausfüllen: Vier-Tage-Woche

    in Microsoft Excel Hilfe
    Automatisches Ausfüllen: Vier-Tage-Woche: Hallo zusammen! Ich würde gerne mal wissen, wie ich es hinbekomme, das ich eine Spalte Datumsbasiert auf der Vier-Tage-Woche automatisch ausfüllen lassen kann anhand der Benutzerdefinierten...
  6. Werte per VBA automatisch übertragen und fortlaufend speichern

    in Microsoft Excel Hilfe
    Werte per VBA automatisch übertragen und fortlaufend speichern: Moin, ich habe da mal eine bitte: wie kann ich diesen Code dazu bringen von einer bestimmten Datei automatische Werte in eine andere Datei kopiert? Ich kann zwar die Werte in derselben Tabelle...
  7. Dynamische Tabellen mit automatischer Aktualisierung

    in Microsoft Excel Hilfe
    Dynamische Tabellen mit automatischer Aktualisierung: Hallo in die Runde! Vorab schon mal vielen Dank für alle Mühen und die Hilfe! Ich habe folgendes Anliegen: Ich habe eine Geräteliste als Excel Datei mit einigen verschiedenen Tabellenblättern...
  8. Arbeitszeiten Pausen automatisch abziehen

    in Microsoft Excel Hilfe
    Arbeitszeiten Pausen automatisch abziehen: Hallo Zusammen Ich möchte eine Tabelle erstellen, in welcher die gesetzlichen Pausen automatisch abgezogen werden. Das heisst ab einer gewissen Anzahl Stunden sollen Automatisch 30min oder 1h...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden