PDA

Vollständige Version anzeigen : Nach jeder 4. Gruppe leere zeile


xxstyler20xx
01.09.2017, 19:36
Hallo habe in meinem Excel eine Spalte mit verschiedenen Werten (Text)

Sieht so aus ..

N
Muster
Muster
Muster
Alt
Alt
Neu
Wenig
Wenig
Wenig
---------- LEERE Zeile----- (wird benötigt)
Viel
Viel
Muster
Muster
Muster
Boden
Boden
Boden

Nun bräuchte ich am ende der 4. Gruppe eine Leerzeile..
Wie kann ich das machen kenne mich in VB noch gar nicht gut aus..

Danke für die Hilfe

aloys78
01.09.2017, 21:45
Hallo,

wieviel Gruppen sind denn im Moment aufgeführt ?
Und woran erkennt man denn in Deinem Beispiel eine Gruppe ?

Gruß
Aloys

xxstyler20xx
02.09.2017, 05:10
Das sind immer unterschiedlich viele zeilen im Dokument da das ganze aus einer SQL auswertung kommt.

Mein Denkansatz wäre sowas wie ein zähler jedes mal wenn sich das wort in der spalte im vergleich zur darüberliegenden zeile ändert wenn der wert des zählers nun 4 ist soll eine leere Zeile eingefügt werden....

Luschi
02.09.2017, 06:56
Hallo xxstyler20xx,

hier mal ein Beispiel dazu, starte das Makro 'test'.

Gruß von Luschi
aus klein-Paris

xxstyler20xx
02.09.2017, 07:07
Perfekt danke !!!
Jetzt bräuchte ich noch eine Sache..
ab A2 soll jetzt nach unten nummeriert werden
1
1
1
1
1
bis zur leerzeile die wir eingefügt haben und unter der leerzeile soll wieder
2
2
2
2
2
nummeriert werden bis zur leerzeile

Luschi
02.09.2017, 07:50
Hallo xxstyler20xx,

hier Versuch Nr. 2:

Gruß von Luschi
aus klein-Paris

xxstyler20xx
02.09.2017, 08:05
Sorry für den aufwand..
Kann man das so machen das es erst ab A2 beginnt? mit dem zählen und die leeren zeilen leer lässt?

aloys78
02.09.2017, 08:32
Hallo,

mein Vorschlag:
Option Explicit

Sub LeereZeile()
Dim LRow As Long ' letzte Zeile
Dim r As Long ' Zeilen#
Dim n As Long ' Anzahl aufeinanderfolgende Gruppen
Const iSpalte As String = "B" ' ---> ggf.Spaltenbezeichnung anpassen
Dim z As Long

LRow = Cells(Rows.Count, iSpalte).End(xlUp).Row
r = 2
z = 1
Application.ScreenUpdating = False
Do
Cells(r, "A") = z
If Cells(r, iSpalte) <> Cells(r + 1, iSpalte) Then
n = n + 1
If n = 4 Then
r = r + 1
Cells(r, iSpalte).EntireRow.Insert
z = z + 1
LRow = LRow + 1
n = 0
End If
End If
r = r + 1
Loop While r < LRow
Cells(r, "A") = z
Application.ScreenUpdating = True
End Sub
Gruß
Aloys

xxstyler20xx
02.09.2017, 09:09
Perfekt! Danke euch allen!!!

:D

xxstyler20xx
04.09.2017, 10:21
Hallo Aloys,
könntest du mir Spalte B noch fortlaufend nummerieren?
Leerzeilen sollen wieder leer bleiben
und danach solls wieder mit 1 beginnen u fortlaufend bis zur leerzeile zählen.

Sg

aloys78
04.09.2017, 17:19
Hallo Sg,
Leerzeilen sollen wieder leer bleiben
Die bleiben schon bei meiner bisherigen Lösung leer.
könntest du mir Spalte B noch fortlaufend nummerieren?
Wieso Sp B, bisher war die Nummerierung in Sp A ?

Gruß
Aloys

xxstyler20xx
04.09.2017, 17:41
Ja die bisherige lösung passt super.. wollte es nur dazu sagen das sie leer bleiben sollen...


Bisher sieht das excel so aus

A|B| Brächte jetzt aber in B
1|1 1
1|2 2
1|3 3
1|4 4
1|5 5
1|6 6
1|7 7
leerzeie leerzeile
2|8 1
2|9 2
2|10 3
2|11 4
2|12 5 usw

Hoffe es ist halbwegs verständlich und danke schon mal

aloys78
04.09.2017, 17:56
Hallo,
Hoffe es ist halbwegs verständlich
Dieser Mischmasch aus alt und neu erschwert unnötig das Verständnis.

Verstehe ich das richtig ?
- Sp A bleibt unverändert
- in Sp B wird für jeden Zeilenblock eine mit 1 beginnende lfd. Zahl eingefügt.

Gruß
Aloys

xxstyler20xx
04.09.2017, 18:00
Ja genau nur in Spalte B immer mit 1 beginnend bis zur leerzeile
alle anderen Spalten bleiben unverändert

aloys78
04.09.2017, 22:53
Hallo,

reden wir über das Gleiche ?
In Sp B steht bei meiner Lösung bisher Text, der über die Gruppierung entscheidet, dieser würde durch die Nummerierung überschrieben.

A B
1 Muster
1 Muster
1 Muster
1 Alt
1 Alt
1 Neu
1 Wenig
1 Wenig
1 Wenig

2 Viel

Gruß
Aloys

xxstyler20xx
05.09.2017, 04:40
Achsooo...
Nein in meinem Excel steht der Text in Spalte N und der counter n zählt bis 5 (nachdem dein Makro gelaufen ist hat man ja die Gruppen.)
Dann ist jede Gruppe in A mit 1 leerzeile 2 leerzeile nummeriert (passt auch)
Nun brauche ich in B aber in jeder zelle eine aufsteigende zahl
Habe dir ein Excel mit hochgeladen so wie ich es bräuchte.

xxstyler20xx
05.09.2017, 07:57
Hallo Aloys, habe es nun hinbekommen ist zwar noch immer mehr spielerei als verständnis aber funktioniert ....
Danke für deine Hilfe.

Lg

aloys78
05.09.2017, 09:38
Hallo,
... habe es nun hinbekommen...
Danke für die Rückmeldung.
... ist zwar noch immer mehr spielerei als verständnis aber funktioniert ...
Du kannst auch Verständnisfragen stellen - auch da versuchen wir zu helfen !

Gruß
Aloys