Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

fehlende Werte einfügen

fehlende Werte einfügen
07.05.2020 11:02:46
Kevin
Guten Tag,
ich benötige Hilfe bei einem VBA Code (oder andere Lösung)
aktuelle Situation:
Ich beziehe Daten aus einem Programm, welches nahezu in regelmäßigen Abständen Daten sendet. Manchmal kommt es vor, dass einige Daten fehlen, wodurch mein Zeitstempel in einem nachfolgenden Programm durcheinander kommt.
Kommen wir nun zu meinem Wunsch:
ich möchte die Daten in ein späteres Programm exportieren, da in dieses Programm kein Datum übernommen wird und er anhand der Messwerte ein Zeitstempel erstellt, hätte ich gerne, dass der Code (unten vereinfacht ausgedrückt).
über eine Schleife sieht, dass ein Wert in a fehlt z.b 07.1.2000 und dann kommt 11.1.2000. Die Werte 08.1, 09.1 & 10.1 sollen dann unterhalb eingefügt werden und den b Wert vom 07.1.2000 übernehmen (also der zuletzt gesendete Wert).
Das ganze soll für die gesamte Liste erfolgen.
Ich wäre euch sehr dankbar, wenn mir jemand helfen kann.
mit freundlichen grüßen.
ist
ist
a b
01.01.2000 100
02.01.2000 102
03.01.2000 98
04.01.2000 98
05.01.2000 110
06.01.2000 105
07.01.2000 90
11.01.2000 80
12.01.2000 99
13.01.2000 100
14.01.2000 120
18.01.2000 111
soll
soll
a b
01.01.2020 100
02.01.2020 102
03.01.2020 98
04.01.2020 98
05.01.2020 110
06.01.2020 105
07.01.2020 90
08.01.2020 90
09.01.2020 90
10.01.2020 90
11.01.2020 80
12.01.2020 99
13.01.2020 100
14.01.2020 120
15.01.2020 120
16.01.2020 120
17.01.2020 120
18.01.2020 111

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: fehlende Werte einfügen
07.05.2020 12:22:22
AlterDresdner
Hallo Kevin,
das Sub
Sub Auffuellen()
Const Startzeile = 1 'ggfls. anpassen
Const quellspalte = 1 'dito
Const SpaltDiff = 2 'dito
Dim zeile, zielzeile, Tag As Date, Wert, i
zeile = Startzeile
zielzeile = zeile
Do
Tag = DateValue(Cells(zeile, quellspalte))
Cells(zielzeile, quellspalte + SpaltDiff) = Cells(zeile, quellspalte)
Cells(zielzeile, quellspalte + SpaltDiff + 1) = Cells(zeile, quellspalte + 1)
zielzeile = zielzeile + 1
If IsDate(Cells(zeile + 1, quellspalte)) Then
If DateDiff("d", Tag, DateValue(Cells(zeile + 1, quellspalte)))  1 Then
Wert = Cells(zeile, quellspalte + 1)
For i = 1 To DateDiff("d", Tag, DateValue(Cells(zeile + 1, quellspalte))) - 1
Cells(zielzeile, quellspalte + SpaltDiff) = _
DateAdd("d", i, Cells(zeile, quellspalte))
Cells(zielzeile, quellspalte + SpaltDiff + 1) = Wert
zielzeile = zielzeile + 1
Next i
End If
End If
zeile = zeile + 1
Loop Until IsEmpty(Cells(zeile, quellspalte))
End Sub

sollte helfen, Startkonstanten ggfls. anpassen. Ebenso das Format (Datum) der Zielspalten.
Gruß der AlteDresdner
Anzeige
AW: fehlende Werte einfügen
07.05.2020 15:19:15
Kevin
Hallo alterDresdner,
zunächst schon einmal vielen Dank für deinen Beitrag.
leider funktioniert es noch nicht richtig.
Nach Anwendung des Makro kopiert er mir nur das erste Datum und füllt nicht die fehlenden Tage auf.
Danke für deine Hilfe.
21.04.2020 06:27 45,13665 Dienstag, 21. April 2020 45,13665
21.04.2020 06:28 45,92047 Dienstag, 21. April 2020 45,92047
21.04.2020 06:29 46,12826 Dienstag, 21. April 2020 46,12826
21.04.2020 06:32 46,13268 Dienstag, 21. April 2020 46,13268
21.04.2020 06:33 45,13665 Dienstag, 21. April 2020 45,13665
21.04.2020 06:34 45,92047 Dienstag, 21. April 2020 45,92047
21.04.2020 06:35 46,12826 Dienstag, 21. April 2020 46,12826
Anzeige
AW: fehlende Werte einfügen
07.05.2020 16:22:17
Kevin
Hallo alterDresdner
der Code funktionier doch :) danke
jedoch.. hatte ich vergessen mitzuteilen, dass es jede Minute auswertet werden muss, aktuell rechnet er die Differenz zwischen den Tagen, ich brauche aber (siehe Beispiel) die Differenz zwischen den Minuten.
Vielen Dank.
ist
21.04.2020 06:27 45,13665
21.04.2020 06:28 45,92047
21.04.2020 06:29 46,12826
21.04.2020 06:32 46,13268
21.04.2020 06:33 45,13665
21.04.2020 06:34 45,92047
21.04.2020 06:35 46,12826
soll
21.04.2020 06:27 45,13665
21.04.2020 06:28 45,92047
21.04.2020 06:29 46,12826
21.04.2020 06:30 46,12826
21.04.2020 06:31 46,12826
21.04.2020 06:32 46,13268
21.04.2020 06:33 45,13665
21.04.2020 06:34 45,92047
21.04.2020 06:35 46,12826
Sub Auffuellen()
Const Startzeile = 1 'ggfls. anpassen
Const quellspalte = 1 'dito
Const SpaltDiff = 2 'dito
Dim zeile, zielzeile, Tag As Date, Wert, i
zeile = Startzeile
zielzeile = zeile
Do
Tag = DateValue(Cells(zeile, quellspalte))
Cells(zielzeile, quellspalte + SpaltDiff) = Cells(zeile, quellspalte)
Cells(zielzeile, quellspalte + SpaltDiff + 1) = Cells(zeile, quellspalte + 1)
zielzeile = zielzeile + 1
If IsDate(Cells(zeile + 1, quellspalte)) Then
If DateDiff("d", Tag, DateValue(Cells(zeile + 1, quellspalte)))  1 Then
Wert = Cells(zeile, quellspalte + 1)
For i = 1 To DateDiff("d", Tag, DateValue(Cells(zeile + 1, quellspalte))) - 1
Cells(zielzeile, quellspalte + SpaltDiff) = _
DateAdd("d", i, Cells(zeile, quellspalte))
Cells(zielzeile, quellspalte + SpaltDiff + 1) = Wert
zielzeile = zielzeile + 1
Next i
End If
End If
zeile = zeile + 1
Loop Until IsEmpty(Cells(zeile, quellspalte))
End Sub

Anzeige
AW: fehlende Werte einfügen
07.05.2020 12:57:09
Günther
Moin,
eine weitere Möglichkeit (bei deiner Version): über Daten | Abrufen und transformieren aka Power Query. Einfach einem (mit einer echten Tabelle) probieren ...
Gruß
Günther
das bist du doch auch...
07.05.2020 14:42:59
Werner
Hallo,
...da stellt sich mir die Frage:
Auf Antworten zu deinem Problem hier zu reagieren kommt dir wohl nicht in den Sinn?
Stattdessen wird in einem anderen Forum mal eben ein anderer Beitrag zum gleichen Problem aufgemacht.
Da kommt bei jedem Helfer sicher Freude auf.
http://www.vba-forum.de/forum/View.aspx?ziel=59027-Zeilen_%C3%BCber_Makro_einf%C3%BCgen_und_werte_%C3%BCbernehmen
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige