HERBERS Excel-Forum - das Archiv

Thema: Zeilen einfügen

Zeilen einfügen
Thomas23
Guten Tag,

ich suche nach einer Möglichkeit meine Arbeit ein bisschen zu erleichtern.
Für eine Berechnung muss ich aus Formatierungsgründen immer 4 Leerzeilen einfügen und zwar wie auf dem Bild im Anhang zu sehen über "Personalnummer" Spalte B.
Da es über 4000 Zeilen sind, ist das natürlich sehr aufwendig.
Im Bild zu sehen (unter dem pinken Strich) ist eine gefilterte Ansicht. Zwischen den Zeilen Personalnummer / Name... ist eine unterschiedliche Anzahl an Zeilen mit Daten.
Gibt es eine Möglichkeit das schneller zu lösen als mit "neuer Zeile einfügen" bzw den Shotcut dafür? Also zb. mit einen Makro?


Userbild


AW: Zeilen einfügen
MCO
Moin!

Das sieht dann wohl so aus:

Sub Zeilen_einfügen()


For cl = Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
If cl <> "" Then
Rows(cl).Insert
Rows(cl).Insert
Rows(cl).Insert
Rows(cl).Insert
End If
Next cl
End Sub

Du kannst natürlich die 4 einzelnen Zeilen auch noch in eine Schleife packen:
Sub Zeilen_einfügen()

For cl = Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
If cl <> "" Then
For Z = 1 To 4
Rows(cl).Insert
Next Z
End If
Next cl
End Sub


oder noch besser, in einem Schritt 4 Zeilen einfügen:
Sub Zeilen_einfügen()


For cl = Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
If cl <> "" Then Rows(cl & ":" & cl + 3).Insert
Next cl
End Sub


Gruß, MCO
AW: Zeilen einfügen
Thomas23
Hallo MCO, dein Makro habe ich mir angeschaut und ausprobiert.
Es macht mir 4 Leerzeilen, allerdings nach jede Zeile die leer ist. (Bild 1)
Kann man das Makro auch so umschreiben, dass man ausschließlich nur vor der Zeile mit Personalnummer diese 4 Leerzeilen einfügt.
so wie im Bild 2.

Bild 1
Userbild


Bild 2
Userbild
AW: Zeilen einfügen
MCO
Hey,

klar.
Tausche das
If cl <> "" Then

in
If instr(cl,"Personalnummer")>0 Then


Fertig.
Gruß, MCO
AW: Zeilen einfügen
Thomas23
hmm funktioniert bei mir leider nicht. kannst du nochmal schauen MCO?

Sub Zeilen_einfügen()


For cl = Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
If InStr(cl, "Personalnummer") > 0 Then Rows(cl & ":" & cl + 3).Insert
Next cl
End Sub
AW: Zeilen einfügen
daniel
Hi
das cl ist hier nur die Zeilennummer.
MCO hat bei der Erstellung des Codes eine Objektschleife im Kopf gehabt, bei der wäre cl dann die Zelle selbst, hier ist es aber nur eine Nummer.
daher musst du noch den Zellwert ermitteln
If instr(Cells(cl, 2).value,"Personalnummer")>0 Then

Gruß Daniel
AW: Zeilen einfügen
Thomas23
Hey, danke funktioniert. Das wird mir in Zukunft wohl deutlich helfen!
AW: Zeilen einfügen
daniel
Hi
ohne Formel so:
1. mach eine Hilfsspalte (bspw Spalte X) und trage dort die Zeilennummer ein (=Zeile() oder 1 und 2 in die ersten beiden Zellen eintragen, dann nach unten ziehen). wenn du =Zeile() machst, kopieren und als Wert einfügen

2. mach eine zweite Hilfsspalte Y mit dieser Formel und ziehe die Formel nach unten:
=Wenn(B1="Personalnummer";X1-0,1;"")
diese Spalte auch wieder kopieren und als Wert einfügen.

3. markiere die Spalte Y und schränke die Markierung auf die Zellen mit Zahl ein (im Menü START - BEARBEITEN - SUCHEN UND AUSWÄHLEN - INHALTE - KONSTANTEN - ZAHLEN

4. kopiere die so markierten Zellen und füge sie unterhalb der Spalte X wieder ein.
wiederhole das Einfügen am Ende von X so oft, wie du Leerzeilen benötigst

5. sortiere jetzt die ganze Liste nach der Spalte Y

6. Lösche Spalte X und Y

Gruß Daniel
AW: Zeilen einfügen
daniel
Hi
geht auch etwas einfacher mit neuem Excel, weil man einen Teil des manuellen Aufwandes per Formel erledigen kann:

1. Trage in die erste freie Spalte am Tabellende diese Formel in die erste Zeile ein, die Anzahl der c beim Vstapeln bestimmt die Anzahl der Leerzeilen, der Zellbereich B1:B30 muss natürlich an deine Datenmenge angepasst werden.
=LET(a;B1:B30;b;ZEILE(a);c;FILTER(b-0,1;a="Personalnummer");VSTAPELN(b;c;c;c;c))

2. kopiere die Hilfsspalte und füge als WERT ein
3. sortiere die Liste nach der Hilfspalte
4. lösche die Hilfsspalte
Gruß Daniel