Clever-Excel-Forum

Normale Version: automatisches Einfügen von Zellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
 
ich habe Grundkenntnisse in Excel, aber leider keine VBA-Kenntnisse. Ist es ok, wenn ich hier folgende Frage stelle?
 
Und zwar habe ich eine Tabelle, in der in den Spalten A alle Börsentage aufgeführt sind, also meist Mo-Fr ohne Feiertage. Nun möchte ich in die Tabelle nach und nach in die Folgespalten die heruntergeladenen Kurse von verschiedenen Aktien kopieren, um selbst statistische Auswertungen vorzunehmen. Dummerweise fehlen bei den heruntergeladenen Daten ab und zu einzelne Tage, wodurch sich die Zeilen nach oben verschieben. Nun suche ich eine Lösung, mit der ich die fehlenden Tage automatisch durch Leerzellen auffüllen kann, sodass die Kurse jeweils in der Zeile des korrekten Datums stehen.
 
Beispiel:
            A                     B                     C                     D
1          Datum 1           Aktie 1             Datum 2           Aktie 2
2          02.01.17           105,00              02.01.17           213,00
3          03.01.17           106,00              03.01.17           211,00
4          04.01.17           106,00              05.01.17           214,00
5          05.01.17           108,00              06.01.17           214,00
 
In die Zellen C4 und D4 müsste also jeweils eine Leerzelle eingefügt und die Zellen nach unten verschoben werden, damit alle zueinander gehörigen Datums-Werte und Aktienkurs-Werte jeweils in einer Zeile stehen. Das bei 3.500 Zeilen und vielen Aktien manuell zu prüfen und ggf. aufzufüllen, ist sehr aufwändig. Wer kennt eine möglichst einfache automatisierte Lösung, die die fehlenden Zellen auffüllt?
 
Danke und Grüße!
 
Eckart
Hallo Eckart

teste mal:
Code:
Public Sub aaa()
Dim loLetzte As Long, loLetzte1 As Long, loSpalte As Long, loAnzahl As Long
Dim z As Long, s As Long

With Worksheets("Tabelle1")
   loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
   loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
   For s = 3 To loSpalte Step 2
       loLetzte1 = .Cells(.Rows.Count, s).End(xlUp).Row
       For z = 2 To loLetzte1
           If .Cells(z, s) > .Cells(z, 1) Then
               .Range(.Cells(z, s), .Cells(loLetzte1, s + 1)).Copy .Cells(z, s).Offset(1, 0)
               .Range(.Cells(z, s), .Cells(z, s + 1)).ClearContents
               loLetzte1 = loLetzte1 + 1
               If loLetzte - loLetzte1 = 0 Then Exit For
           End If
       Next z
   Next s
End With
End Sub
Gruß Werner
Wieder ein Crossposter ... :16:
Hey

Da deine VBA Kenntnisse gering sind hier ein Vorschlag ohne VBA. Nutze ein zweites Tabellenblatt.

[attachment=13135]
Erstmal herzlichen Dank für die hilfreichen Antworten. 

Und sorry - ich hatte die Frage in zwei Foren gesetzt, da ich noch nicht wusste, welches Forum geeignet ist. Muss mich erst in die regeln und Üblichkeiten einfinden. Zukünftig reicht wohl ein Forum, wie ich anhand der schnellen Reaktionen sehe.

Die Problematik des Cross-Postings in zwei Foren war mir nicht bewusst und ich bitte um Entschuldigung.

Ob das hier erlaubt ist, darüber konnte ich in der Hilfe dieses Forums nichts finden.

Auf jeden Fall füge ich jetzt hier wie gewünscht einen Link zu meinem Eintrag in dem anderen Forum ein:
http://www.ms-office-forum.net/forum/sho...p?t=345616

Ich werde nun die Möglichkeiten ausprobieren.

Grüße
Eckart