Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Texte in Blöcke aufteilen mit Leerzeilen

VBA: Texte in Blöcke aufteilen mit Leerzeilen
16.02.2017 16:25:54
KlausF
Hallo Forum,
Ausgangsstellung: mehrere tausend Texte in Spalte A mit Überschrift in A und B
Endergebnis in Spalte C und D:
Texte in 10er Blöcke nebeneinander, dazwischen immer vier Leerzeilen.
Texte laufen am Ende einfach aus
Gesucht wird eine einfache und variable VBA-Lösung:
Variabel in Blockgröße und Anzahl Leerzeilen
Bin für jede Hilfe dankbar.
https://www.herber.de/bbs/user/111528.xls
Gruß
Klaus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Texte in Blöcke aufteilen mit Leerzeilen
16.02.2017 17:15:16
Daniel
HI
mal als Copy-Paste-Variante, dh nicht unbedingt das schnellste.
in Spalte A dürfen keine Leerzellen vorhanden sein.
deine Einstellungen (Blockbgröße, Anzahl Leerzeilen, Anzahl Spalten nebeneinander) kannst du in den Konstanten am Anfang machen:
Sub test()
Const Zeilen As Long = 10
Const Leerzeilen As Long = 4
Const Spalten As Long = 2
Dim z As Long
Dim s As Long
For z = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step Zeilen * Spalten
For s = 0 To Spalten - 1
Cells(z + s * Zeilen, 1).Resize(Zeilen).Copy
Cells(Rows.Count, 3 + s).End(xlUp).Offset(Leerzeilen + 1).PasteSpecial xlPasteAll
Next
Next
End Sub
Gruß Daniel
Anzeige
noch eine Kleinigkeit
16.02.2017 17:30:45
KlausF
Hallo Daniel,
vielen Dank, so habe ich mir das vorgestellt!
Allerdings fängt Deine Lösung mit 4 Leerzeilen an, es soll aber mit Text
in Zeile 2 angefangen werden wie in meinem Beispiel.
Kannst Du das noch anpassen?
Vielen Dank.
Klaus
AW: noch eine Kleinigkeit
16.02.2017 18:29:11
Daniel
naja, ein bisschen was darfst du auch tun
Gruß Daniel
AW: noch eine Kleinigkeit
16.02.2017 19:03:05
KlausF
Hallo Daniel,
mit den Const Leerzeilen habe ich das ehrlich gesagt nicht hinbekommen.
Logischerweise müsste ja die Paste-Zeile bei Offset(Leerzeilen + 1) angepasst werden.
Helfe mir jetzt aber, in dem ich die Vorlaufzeilen am Ende dynamisch lösche:
Range("C2:D" & Leerzeilen + 1).Delete
Funktioniert auch. Vielen Dank noch einmal.
Gruß
Klaus
Anzeige
AW: noch eine Kleinigkeit
16.02.2017 19:20:21
Daniel
HI
naja, das Offset müsste im ersten Schleifendurchlauf anders sein als in allen weiteren, das ist halt etwas umständlich zu programmieren.
man könnte die Einfügezeile aber auch berechnen:

Sub test()
Const Zeilen As Long = 10
Const Leerzeilen As Long = 4
Const Spalten As Long = 2
Dim z As Long
Dim ze as long
Dim s As Long
ze = 2
For z = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step Zeilen * Spalten
For s = 0 To Spalten - 1
Cells(z + s * Zeilen, 1).Resize(Zeilen).Copy
Cells(ze, 3 + s).PasteSpecial xlPasteAll
Next
ze = ze + Zeilen + Leerzeilen
Next
End Sub
Gruß Daniel
Anzeige
Perfekt
16.02.2017 19:36:24
KlausF
Vielen Dank Daniel, sehr lehrreich für mich!
Gruß
Klaus

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige