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. Probleme mit dem automatisches Inhaltsverzeichnis

    in Microsoft Word Hilfe
    Probleme mit dem automatisches Inhaltsverzeichnis: Hallo zusammen, ich stehe vor dem Problem, dass ich in einem automatischen Inhaltsverzeichnis zwei unterschiedliche Darstellung von Seitenzahlen haben möchte. Ich versuche es unten zu...
  3. Änderung Titel Folie 1 für alle weiteren Folien übernehmen

    in Microsoft PowerPoint Hilfe
    Änderung Titel Folie 1 für alle weiteren Folien übernehmen: Hallo zusammen, ich habe eine Präsentation mit dem selben Titel für alle weitere Folien. Jetzt ändert sich daran jeden Monat nur die Monatsbezeichnung, z.B. aus April wird dann eben Mai....
  4. eingehende Emails über bestimmtes Konto automatisch weiterleiten

    in Microsoft Outlook Hilfe
    eingehende Emails über bestimmtes Konto automatisch weiterleiten: Hallo! Ich würde gerne eingehende Emails automatisch (z.B) aus Outlook heraus an eine bestimmte Zieladresse weiterleiten. Das Programm von unserem Steuerbüro akzeptiert Rechnungen nur von einer...
  5. Wie automatisch Word2016 cache löschen beim Exit?

    in Microsoft Word Hilfe
    Wie automatisch Word2016 cache löschen beim Exit?: Wie ich feststellen musste speichert mein Word2016 (unter Windows 10) eine Menge *.log Dateien unter C:\Users\<username>\AppData\Local\Temp\Diagnostics\Winword\ Wie kann ich Word anweisen diese...
  6. StartFenster wird nicht automatisch geöffnet

    in Microsoft Access Hilfe
    StartFenster wird nicht automatisch geöffnet: Hallo liebe Leute, ich frage mich warum das in den Optioneneingestellte Formular (frmStart) nicht sofort geöffnet wird, sondern aus einem Parameterfenster erst ausgewählt werden muß. Verwende ich...
  7. Fortlaufendes Datum im Kopf für je 2 Seiten

    in Microsoft Word Hilfe
    Fortlaufendes Datum im Kopf für je 2 Seiten: Hallo zusammen, und zwar würde ich gerne ein laufendes Datum in die Kopfzeile eines Word-Dokumentes setzen. Es sind jeweils 2 aufeinanderfolgende zusammengehörige Seiten mit einem Datum...
  8. Silbentrennung automatisch deaktivieren in blauem Text

    in Microsoft Word Hilfe
    Silbentrennung automatisch deaktivieren in blauem Text: Hallo Forum, ich hätte gerne eure Hilfe bei folgender Fragestellung: Ich erstelle in WORD häufig Tutorials zum Programmieren, üblicherweise in JAVA. Fließtext mit Erläuterungen und...
  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