Supportnet / Forum / Tabellenkalkulation
automatische Gruppierung einer Tabelle, wenn in Spalte B ein Wert steht
Frage
Hallo Excelianer,
ich habe folgendes Problem:
In einer umfangreichen Tabelle stehen in Spalte A aufsteigend Werte von 1 bis 500. Die Bereiche müssen in unterschiedlichen, nicht identischen Stückelungen zusammengefaßt werden. Z.B. von 1-10, von 11-15, von 16-29 etc. In Spalte B wird dann der Wert eingetragen, bis zu dem dieser Wertebereich geht.
In den Spalten A und B stehen also quasi die von/bis-Werte nebeneinander.
Ich möchte nun die einzelnen Zeilen ausblenden, die innerhalb eines solchen Wertebereichs liegen, also in dem o.a. Beispiel die Zeilen mit 2-10 in Spalte A. Dazu möchte ich diese mit der Gruppierung eine Ebene nach unten stufen.
Das soll nun nach Möglichkeit nicht mehr "zu Fuss", sondern mit einem Makro ablaufen. Ich kriege es aber immer noch nicht hin, mit VBA die Bedingung (ob in Spalte B was steht) einzubauen und das Makro nur bis zum Tabellenende laufen zu lassen.
Vielleicht opfert sich ja ein VBA-Experte.
Ich schick dafür dann bei Bedarf eine Super-Formel-Sammlung zu ;-)))
CU
want2cu
Antwort 1 von Guenter
Hallo Klaus,
ich "opfere" mich mal.
Hier ein kleines Makro, das Du mal ausprobieren kannst:
Schreib doch mal, ob es das schon war oder ob noch weiter gemacht werden muss.
Gruß
Günter
ich "opfere" mich mal.
Hier ein kleines Makro, das Du mal ausprobieren kannst:
Option Explicit
Sub test()
Dim i As Integer
Dim n As Integer
Dim Gruppe As Integer
i = Cells(Rows.Count, 1).End(xlUp).Row
For n = 1 To i
Gruppe = Cells(n, 2).Value
If Gruppe > 0 Then
Range(Cells(n + 1, 2), Cells(Gruppe, 2)).Select
Selection.Rows.Group
End If
Next
End Sub
Schreib doch mal, ob es das schon war oder ob noch weiter gemacht werden muss.
Gruß
Günter
Antwort 2 von want2cu
Hallo Günter,
zunächst mal ganz herzlichen Dank für deine Hilfe.
Ich habe den Code kopiert und erhalte beim schrittweisen Testen folgende Fehlermeldung:
Laufzeitfehler 13: Typen unverträglich.
Wenn ich auf die Schaltfläche TESTEN der Infobox klicke, springt dei gelbe Markierung auf folgende Zeile:
Gruppe = Cells(n, 2).Value
Wäre nett, wenn du mir da noch mal weiterhelfen könntest.
Im Voraus schon vielen Dank!
CU
want2cu
zunächst mal ganz herzlichen Dank für deine Hilfe.
Ich habe den Code kopiert und erhalte beim schrittweisen Testen folgende Fehlermeldung:
Laufzeitfehler 13: Typen unverträglich.
Wenn ich auf die Schaltfläche TESTEN der Infobox klicke, springt dei gelbe Markierung auf folgende Zeile:
Gruppe = Cells(n, 2).Value
Wäre nett, wenn du mir da noch mal weiterhelfen könntest.
Im Voraus schon vielen Dank!
CU
want2cu
Antwort 3 von Guenter
Hallo Klaus,
nimm mal bei folgender Zeile etwas weg:
Dim Gruppe As Integer
nur
Dim Gruppe
Sind Deine Zahlen in Spalte B > 32768?
Gruß
Günter
nimm mal bei folgender Zeile etwas weg:
Dim Gruppe As Integer
nur
Dim Gruppe
Sind Deine Zahlen in Spalte B > 32768?
Gruß
Günter
Antwort 4 von want2cu
Hallo Günter,
es klappt leider immer noch nicht.
Jetzt hängt er bei der Zeile :
If Gruppe > 0 Then
mit derselben Fehlermeldung wie oben beschrieben.
<seufz>
Was mache ich falsch? (ausser, dass ich immer noch mein VBA-Buch für Excel nicht durchgearbeitet habe?)
Die Zahlen in Spalte B sind <3000
CU
want2cu
es klappt leider immer noch nicht.
Jetzt hängt er bei der Zeile :
If Gruppe > 0 Then
mit derselben Fehlermeldung wie oben beschrieben.
<seufz>
Was mache ich falsch? (ausser, dass ich immer noch mein VBA-Buch für Excel nicht durchgearbeitet habe?)
Die Zahlen in Spalte B sind <3000
CU
want2cu
Antwort 5 von Guenter
Hallo Klaus,
dann sieht es so aus, als ob Deine Spalte B auch Text enthält.
Ich bin davon ausgegangen, dass Deine Spalte B reine Zahlen enthält. Ich habe dazu eine Beispieltabelle nach Deinen Angaben in der Frage konstruiert. Diese Beispieltabelle kann ich Dir gerne schicken.
Gruß
Günter
dann sieht es so aus, als ob Deine Spalte B auch Text enthält.
Ich bin davon ausgegangen, dass Deine Spalte B reine Zahlen enthält. Ich habe dazu eine Beispieltabelle nach Deinen Angaben in der Frage konstruiert. Diese Beispieltabelle kann ich Dir gerne schicken.
Gruß
Günter
Antwort 6 von want2cu
Hallo Günter,
sorry, dass meine Angaben nicht ganz vollständig waren. Ich hätte mir ja denken können, dass es für VBA wesentlich ist, wo das Makro anfangen soll.
Die eigentlichen Zahlen beginnen erst in Zeile 3, in Zeile 1 und 2 stehen Spaltenüberschriften.
Es handelt sich um ein alfabetisches Raster, bei dem zu jeder Zahl (beginnend z.B. mit 2000 und endend mit 2600) ein definierter Buchstabenbereich zugeordnet wird.
Diese Ordnungsnumemrn mit Zahlen werden zuständigkeitshalber bestimmten Personen zugewiesen. Dabei entstehen größeere zusammenhängenede Bereiche, für die dann ein Bearbeiter zuständig ist.
Um nicht 600 Tabellenzeilen(für Übersichten und Ausdrucke) zu haben, sollen die zusammengehörigen Bereiche zusammengefaßt und per Gliederungsfunktion gerafft dargestellt werden.
Da sich diese Zuständigkeiten immer wieder ändern, möchte ich die Tabelle automatisch gleidern.
Wenns hilft, sende ich gerne mal eine abgespeckte Beispieltabelle.
CU
want2cu
sorry, dass meine Angaben nicht ganz vollständig waren. Ich hätte mir ja denken können, dass es für VBA wesentlich ist, wo das Makro anfangen soll.
Die eigentlichen Zahlen beginnen erst in Zeile 3, in Zeile 1 und 2 stehen Spaltenüberschriften.
Es handelt sich um ein alfabetisches Raster, bei dem zu jeder Zahl (beginnend z.B. mit 2000 und endend mit 2600) ein definierter Buchstabenbereich zugeordnet wird.
Diese Ordnungsnumemrn mit Zahlen werden zuständigkeitshalber bestimmten Personen zugewiesen. Dabei entstehen größeere zusammenhängenede Bereiche, für die dann ein Bearbeiter zuständig ist.
Um nicht 600 Tabellenzeilen(für Übersichten und Ausdrucke) zu haben, sollen die zusammengehörigen Bereiche zusammengefaßt und per Gliederungsfunktion gerafft dargestellt werden.
Da sich diese Zuständigkeiten immer wieder ändern, möchte ich die Tabelle automatisch gleidern.
Wenns hilft, sende ich gerne mal eine abgespeckte Beispieltabelle.
CU
want2cu
Antwort 7 von Guenter
Hallo Klaus,
Du kannst mir gerne eine kleine Beispieltabelle schicken:
guenter.hoelzemann@lycos.com
Es ist mir aber hier schon öfter passiert, dass aus einer einfachen Anfrage ein komplexes Problem geworden ist.
Gruß
Günter
Du kannst mir gerne eine kleine Beispieltabelle schicken:
guenter.hoelzemann@lycos.com
Es ist mir aber hier schon öfter passiert, dass aus einer einfachen Anfrage ein komplexes Problem geworden ist.
Gruß
Günter
Antwort 8 von want2cu
Hallo Günter,
Tabelle ist unterwegs.
Nochmals ganz herzlichen Dank!
CU
want2cu
Tabelle ist unterwegs.
Nochmals ganz herzlichen Dank!
CU
want2cu
Antwort 9 von Guenter
Hallo Klaus,
hier ist das verbesserte Makro:
So läuft es erstmal bei mir.
Du musst nochmals kontrollieren, ob alles stimmt.
Ich schicke Dir auch den File mit Makro zurück.
Gruß
Günter
hier ist das verbesserte Makro:
Option Explicit
Sub test()
Dim i As Integer
Dim n As Integer
Dim rowNr As Integer
i = Cells(Rows.Count, 1).End(xlUp).Row
For n = 3 To i
If Cells(n, 2).Value > 0 Then
rowNr = Cells(n, 2).Value - Cells(n, 1).Value
Range(Cells(n + 1, 8), Cells(n + rowNr, 8)).Select
Selection.Rows.Group
End If
Next
End Sub
So läuft es erstmal bei mir.
Du musst nochmals kontrollieren, ob alles stimmt.
Ich schicke Dir auch den File mit Makro zurück.
Gruß
Günter
Antwort 10 von want2cu
Hallo Günter,
es läuft super!
Ganz herzlichen Dank und viele Grüsse aus dem Bergischen Bermuda Dreieck sendet dir
want2cu
es läuft super!
Ganz herzlichen Dank und viele Grüsse aus dem Bergischen Bermuda Dreieck sendet dir
want2cu