Zeile hinzufügen falls Datum fehlt

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zeile hinzufügen falls Datum fehlt
von: Matze
Geschrieben am: 08.05.2015 12:24:11

Hallo Zusammen!
Ich habe ein kleines Problem, ich hoffe ihr könnt mir helfen. In Spalte A ist das Datum (mehr als 10.000 Einträge) aufgelistet, wobei diese Auflistung nicht vollständig ist. Manchmal fehlt ein Eintrag, manchmal fehlen 2 oder 3, und manchmal ist ein Datum doppelt aufgeführt. Ich bin nun auf der Suche nach einem VBA Code, welcher mir, falls ein Datumseintrag fehlt so lange eine neue Reihe einfügt und das korrekte Datum in die hinzugefügte Reihe einträgt, bis die Datumsspalte vollständig ist. Die schon vorhanden doppelten Datumseinträge müssen allerdings vorhanden bleiben.
Das ganze sieht aktuell so aus.
03-Jan-14
04-Jan-14
07-Jan-14
09-Jan-14
14-Jan-14
14-Jan-14
15-Jan-14
17-Jan-14
Vielen Dank und viele Grüße
Matze

Bild

Betrifft: AW: Zeile hinzufügen falls Datum fehlt
von: UweD
Geschrieben am: 08.05.2015 13:11:19
Hallo
so ?

Sub TTT()
    On Error GoTo Fehler
    Dim i%
    Dim SP%, ZE&, LR&
    
    Application.ScreenUpdating = False
    SP = 1 'Spalte A
    ZE = 2 'ab Zeile wegen Überschrift
    With ActiveSheet
        LR = .Cells(Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
        For i = LR To ZE Step -1
            If .Cells(i, SP) - .Cells(i - 1, SP) > 1 Then
               .Cells(i, SP).Insert xlDown
               .Cells(i, SP) = .Cells(i + 1, SP) - 1
               i = i + 1
            End If
        Next
    End With
    
    '*** Fehlerbehandlung
    Err.Clear
Fehler:
        If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Gruß UweD

Bild

Betrifft: AW: Zeile hinzufügen falls Datum fehlt
von: Matthias
Geschrieben am: 09.05.2015 09:41:26
Hi Uwe,
vielen Dank der Code funktioniert einwandfrei. Da ich noch ziemlich am Anfang meiner VBA Programmier Karriere stehe möchte ich fragen ob du mir kurz den Code erklären kannst. Sprich was wofür steht?
Das wäre klasse!
Vielen Dank und VG
Matthias

Bild

Betrifft: AW: Zeile hinzufügen falls Datum fehlt
von: Matze
Geschrieben am: 11.05.2015 03:35:15
Hi Uwe und alle anderen,
leider habe ich herausgefunden, dass der Code bei großen Datenmengen nicht funktioniert.
Ich erhalte immer einen Laufzeitfehler, wenn ich diesen über meine gesamte Datumsspalte mit mehr als 10.000 Einträgen laufen lasse.
Der Mechanismus mit dem Einfügen von Zeilen muss allerdings bestehen bleiben, da zu jedem Datum in einer Zeile mehrere Werte dahinter stehen, welche bei einem eingefügten Datum natürlich nicht existieren.
Bitte bedenkt, dass manche Datum mehrfach auftreten können.
Das ganze soll letztendlich so aussehen.
Datum WertA ...
03-Jan-14 1r
04-Jan-14 2w
07-Jan-14 3df
09-Jan-14 4sc
14-Jan-14 5st
14-Jan-14 6zx
15-Jan-14 7f
17-Jan-14 8e
.
.
.
wird zu
Datum WertA ...
03-Jan-14 1r
04-Jan-14 2w
05-Jan-14
06-Jan-14
07-Jan-14 3df
08-Jan-14
09-Jan-14 4sc
10-Jan-14
11-Jan-14
12-Jan-14
13-Jan-14
14-Jan-14 5st
14-Jan-14 6zx
15-Jan-14 7f
16-Jan-14
17-Jan-14 8e
.
.
.
Vielen Dank und viele Grüße
Matthias

Bild

Betrifft: Deklariere mal mit Long ...
von: Matthias L
Geschrieben am: 12.05.2015 00:06:54
Hallo

Dim i&, SP&, ZE&, LR&
Ich hab das auch mit Daten über 10.000 Zeilen getestet
Dauert zwar ein Weilchen, aber geht.
https://www.herber.de/bbs/user/97586.xlsm
Wobei man auch Konstanten benutzen könnte
Dim i&, LR&
Application.ScreenUpdating = False
Const SP = 1 'Spalte A
Const ZE = 2 'ab Zeile wegen Überschrift
'...usw.
Gruß Matthias

Bild

Betrifft: Zeile hinzufügen falls Datum fehlt
von: Matthias L
Geschrieben am: 12.05.2015 08:53:58
Hallo
Hab gerade nochmal drübergeschaut.
Zitat
Der Mechanismus mit dem Einfügen von Zeilen muss allerdings bestehen bleiben, da zu jedem Datum in einer Zeile mehrere Werte dahinter stehen, welche bei einem eingefügten Datum natürlich nicht existieren.
Das hattest Du so in der Ausgangsfrage nicht erläutert.
Du wolltest nur Spalte("A") ergänzen. Daraufhin hat Uwe den Code geschrieben.
Wie ich das jetzt lese stellt es sich anders dar.
Ich vermute mal die Werte der Nachbarspalte, also der Wert zum Datum in Spalte(A)
soll dabei richtig zugewiesen bleiben. Richtig?
Bsp.
vorher:

 AB
1Datum16.05.2015
2  
316.05.201516
417.05.201517
518.05.201518
618.05.201518
720.05.201520
821.05.201521
921.05.201521
1023.05.201523
1126.05.201526


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4


soll vermutlich nachher so aussehen:
 AB
1Datum16.05.2015
2  
316.05.201516
417.05.201517
518.05.201518
618.05.201518
719.05.2015 
820.05.201520
921.05.201521
1021.05.201521
1122.05.2015 
1223.05.201523
1324.05.2015 
1425.05.2015 
1526.05.201526


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Hab ich das richtig verstanden?
Ich vemute also das Du komplette Zeilen einfügen willst
und nicht nur das fehlende Datum in Spalte einfügen willst.
Hier mal im Code ergänzt.
https://www.herber.de/bbs/user/97590.xlsm
Gruß Matthias

Bild

Betrifft: AW: Zeile hinzufügen falls Datum fehlt
von: Matze
Geschrieben am: 13.05.2015 03:24:22
Hi Matthias,
wow, vielen Dank für den Code, jetzt hat es wirklich funktioniert. Witzigerweise ging es mit Uwes erstem Code auch bei einer kleinen Anzahl von Daten. Sprich die Zeile wurde komplett eingefügt und die Werte in den dahinterliegenden Spalten sind mit nach unten gerutscht. Bei einer großen Anzahl an Daten ging es allerdings nicht mehr.
Wie dem auch sei, jetzt bin ich glücklich, vielen Dank nochmal an alle!
Viele Grüße
Matthias

Bild

Betrifft: AW: Zeile hinzufügen falls Datum fehlt
von: UweD
Geschrieben am: 13.05.2015 09:05:24
Hallo nochmal
nur noch zur Erklärung:
Dim i%
Die Variable i wurde von mir als Integer dimensioniert. Damit kann der Wert max 32.767 annehmen.
Das war bei der Datenmenge zu wenig
Mit Dim i& (also als Long) wären es 2.147.483.647
Das reicht dann.
Gruß UweD

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeile hinzufügen falls Datum fehlt"