Hallo zusammen!
Ich als völliger VBA Anfänger stehe vor folgendem Problem und wäre euch dankbar, wenn ihr mir helfen könntet:
Habe eine Excel Tabelle mit Zeitreihen von Wertpapierpreisen, wobei die Zeitreihe spaltenweise von oben nach unten gehen, also in der linken Spalte das Datum, in der rechten der dazugehörige Preis. Wobei jede Zeitreihe in der sechsten Zeile beginnt, egal welches Datum. Von diesen Wertpapieren habe ich um die 500, sodass die Tabelle von links nach rechts Datum WP1, Preis WP1, Datum WP2, Preis WP2, Datum WP3... ich würde jetzt gerne eine Datumleiste ganz links haben und in den restlichen Spalten nur Preise. Da die Zeitreihen aber zu unterschiedlichen Zeitpunkten beginnen, müssen die Preise bis zum passenden Datum nach unten verschoben werden. Ziel ist, dass in einer Zeile alle Preise zum selben Datum gehören. Habe schon was geschrieben, was komischer Weise für vereinzelte Spalten (wenn ich nur das Verschieben eines Spaltenpaares betrachte) klappt, aber nicht wenn ich das Makro für alle durchlaufen lassen möchte. Das Makro vergleicht das Datum des Preises mit dem der Zeitleiste ganz links und wenn es nicht identisch ist, wird die gesamte Zeitreihe also sowohl Datum als auch Preis kopiert und eine Zeile tiefer eingefügt. Dort erscheint immer "Laufzeitfehler 1004- Anwendungs- oder objektdefinierter Fehler". Zur info noch: in den geradenen Spalten steht immer das Datum, links daneben der Preis.
Sub spaltenVerschieben()
Dim i As Integer
Dim m As Integer
For m = 26 To 26 Step 2
For i = 6 To 3648
If Tabelle1.Cells(i, 1) <> Tabelle1.Cells(i, m) Then
Tabelle1.Range(Cells(i, m), Cells("3648", m + 1)).Select
Selection.Cut
Tabelle1.Range(Cells(i + 1, m), Cells("3648", m + 1)).Select
ActiveSheet.Paste
End If
If Tabelle1.Cells(i + 1, m) = "" Then
i = 3648
End If
Next
Next
End Sub
Weiss, dass es evtl nicht die einfachste Herangehensweise ist, aber wäre euch dankbar
|