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