Excel - Tabelleninhalte kopieren

Ich habe eine Excel-Tabelle (Excel_2007).
Zeile 1 beinhaltet Überschriften.
Zeile 2 ist leer

Von Zeile 3 bis Zeile 5 stehen zusammengehörige Daten.

Nun bräuchte ich ein Makro, daß mir von Zeile 4 die Daten in den Spalten B, C und E diese in leere Zellen in Zeile 5 kopiert (B5, C5 und E5).

Zeile 6 ist leer.

Von Zeile 7 bis Zeile 9 soll dasselbe gemahct werden wie zuvor, nämlich die Daten in B8, C8 und E8 in die leeren Zellen in Zeile 9 (B9, C9 und E9) kopiert werden.

Dies soll so lange wiederholt werden bis 2 leere Zeilen kommen.

Die Tabelle belegt ca. 3.800 Zeilen insgesamt die nach diesem Schema aufgebaut ist.

Vielen Dank.

Nun bräuchte ich ein Makro, daß mir von Zeile 4 die Daten in
den Spalten B, C und E diese in leere Zellen in Zeile 5
kopiert (B5, C5 und E5).

Zeile 6 ist leer.

Von Zeile 7 bis Zeile 9 soll dasselbe gemahct werden wie
zuvor, nämlich die Daten in B8, C8 und E8 in die leeren Zellen
in Zeile 9 (B9, C9 und E9) kopiert werden.

Dies soll so lange wiederholt werden bis 2 leere Zeilen
kommen.

Hallo Uwe,

wenn K leer ist kannste folgenden Code nehmen, wenn was in K steht
mußte den Code abändern (lassen).

Gruß
Reinhard

Option Explicit

Sub tt()
Dim zeiGesamt As Long, zeiLetzte As Long, Zei As Long
With Worksheets("Tabelle1")
 zeiGesamt = .Columns(1).SpecialCells(xlCellTypeLastCell).Row
 .Range("K1:K" & zeiGesamt).Formula = "=IF(COUNTBLANK(A1:J2)=20,ROW(),"""")"
 zeiLetzte = Application.Min(Range("K:K"))
 For Zei = zeiLetzte - 2 To 4 Step -4
 Range("B" & Zei + 1).Value = Range("B" & Zei).Value
 Range("C" & Zei + 1).Value = Range("C" & Zei).Value
 Range("E" & Zei + 1).Value = Range("E" & Zei).Value
 Next Zei
 .Range("K:K").ClearContents
End With
End Sub

Hallo grußloser Uwe,

Ich habe eine Excel-Tabelle (Excel_2007).
Zeile 1 beinhaltet Überschriften.
Zeile 2 ist leer

wie wir weiter sehen werden gibt es in regelmäßiger Wiederholung eine solche Leerzeile.

Von Zeile 3 bis Zeile 5 stehen zusammengehörige Daten.

Ein Datensatz enthält also drei Zeilen und ist vom nächsten jeweils durch eine Leerzeile getrennt.

Nun bräuchte ich ein Makro, daß mir von Zeile 4 die Daten in
den Spalten B, C und E diese in leere Zellen in Zeile 5
kopiert (B5, C5 und E5).

Bei meinem Makro werden die entsprechenden Zellen in Zeile 5 (und in Folge jede vierte) rücksichtslos überschrieben.

Zeile 6 ist leer.

Wie gesagt Trennung von Datensatz zu Datensatz.

Von Zeile 7 bis Zeile 9 soll dasselbe gemahct werden wie
zuvor, nämlich die Daten in B8, C8 und E8 in die leeren Zellen
in Zeile 9 (B9, C9 und E9) kopiert werden.

Gut beschrieben und schönes Beispiel für ein erstes VBA-Makro.

Dies soll so lange wiederholt werden bis 2 leere Zeilen
kommen.

Ich habe mich dazu entschieden, den benutzten Bereich zu untersuchen, zur Sicherheit 3 Zeilen (Umfang eines Datensatzes) hinzuzuzählen und dann den Kopiervorgang abzubrechen.

Die Tabelle belegt ca. 3.800 Zeilen insgesamt die nach diesem
Schema aufgebaut ist.

Wer wollte das von Hand erledigen?

Vielen Dank.

Ich gehe davon aus, dass Du noch keine VBA-Erfahrung hast. Daher ein paar kurze Worte der Vorbereitung.
Du öffnest Deine Datei. Erstelle zum Testen bitte eine Kopie Deines Orginals. Mit Alt + F11 kommst Du in die VBA-Umgebung. Hier solltest Du drei Fenster finden, links zwei kleine und rechts ein großes. Links oben klickst Du Deine Datei an. Über das Menü Einfügen // Modul erzeugst Du ein solches. In das rechte Fenster kopierst Du diesen Code (von inklusive Option Explicit und End Sub):

Option Explicit

Sub BCE_Kopieren()
’ Kopiert Spalten B(2), C(3) und E(5)
’ Variablen
Dim I As Long, J As Long, Ende As Long
’ Initialisieren
I = 5
J = I - 1
With ActiveWorkbook.ActiveSheet
Ende = .UsedRange.Rows.Count
’ Start des Kopiervorganges
Do Until I > Ende + 3
Cells(I, 2).Value = Cells(J, 2).Value
Cells(I, 3).Value = Cells(J, 3).Value
Cells(I, 5).Value = Cells(J, 5).Value
I = I + 4
J = I - 1
Loop
End With
End Sub

Mit Alt + F11 kommst Du wieder zurück nach Excel. Hier kannst Du das Makro mit Alt + F8 aufrufen.

Mit freundlichem Gruß MwieMichel

Hallo Reinhard, in Spalte K stehen Daten. In manchen Zeilen stehen Daten bis zur Zeile P.
Vielen Dank.
Gruß
Uwe

Hallo Reinhard, in Spalte K stehen Daten. In manchen Zeilen
stehen Daten bis zur Zeile P.

Hallo Uwe,

Option Explicit

Sub tt()
Dim zeiGesamt As Long, zeiLetzte As Long, Zei As Long
With Worksheets("Tabelle1")
 zeiGesamt = .Columns(1).SpecialCells(xlCellTypeLastCell).Row
 .Range("Z1:Z" & zeiGesamt).Formula = "=IF(COUNTBLANK(A1:Y2)=50,ROW(),"""")"
 zeiLetzte = Application.Min(Range("Z:Z"))
 For Zei = zeiLetzte - 2 To 4 Step -4
 Range("B" & Zei + 1).Value = Range("B" & Zei).Value
 Range("C" & Zei + 1).Value = Range("C" & Zei).Value
 Range("E" & Zei + 1).Value = Range("E" & Zei).Value
 Next Zei
 .Range("Z:Z").ClearContents
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,

perfekte Lösung.

Vielen Dank!!!

Grüße

Uwe