Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1280to1284
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

VBA Excel - Unterschiedliche Zeitstempel

VBA Excel - Unterschiedliche Zeitstempel
11.10.2012 12:17:18
Matthias
Hallo,
ich bin der Matthias und benötige dringend Hilfe.
Ich muß Messwerte mit Excel auswerten. Zur Automatisierung des ganzen verwende ich VBA.
Die Werte in meiner Quelldatei sind in einer Zeitreihe geordnet.
Leider ist diese Zeitreihe nicht äquidistant (Werte nicht im Zeitschritt von z.B. einer Sekunde).
Ich muß diese Daten jedoch so aufbereiten dass jedem Zeitschritt von einer Sekunde ein Wert zugeordnet ist.
Dies habe ich wie folgt umgesetzt:
1. Auf einem neues Tabellenblatt wird eine Zeitreihe von z.B. 01.10.2012 00:00:00 (dd.mm.jjjj hh:mm:ss) bis 01.10.2012 23:59:59 mit einem Zeitschritt von 1 Sekunde erzeugt
2. Dieser Zeitreihe werden mittels vlookup die entsprechenden Werte zugeordnet
Und hier mein Problem:
Aus irgend einem Grund Wird der "Zeitstempel" in der Quelldatei unterschiedlich gespeichert.
Hier ein Beispiel (man erkennt auch was mit nicht äquidistant gemeint ist):
01.10.2012 05:01
2012.10.01 05:01:36.009
2012.10.01 05:01:39.003
2012.10.01 05:01:41.003
2012.10.01 05:01:42.009
Bei der ersten Variante klappt alles prima. Aber bei der zweiten verständlicherweise nichts mehr.
Hat jemand eien Idee wie ich dieses Problem behandeln kann?
Mein Kollege und ich hatten uns überlegt den "Zeitstempel" in eine Zahl umzuwandeln und anschließend einheitlich auf die gewünschte Form (dd.mm.jjjj hh:mm:ss) zu bringen.
Ich habe aber bedenken daß vlookup mit den Millisekunden im 2. Zahlenformat nicht ummgehen kann.
Ich hoffe jemand kann mir bei dieser, für meine Begriffe, kniffligen Herausforderung helfen.
Vielen Dank schonmal im voraus.
Mit freundlichen Grüßen
Matthias

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel - Unterschiedliche Zeitstempel
11.10.2012 12:29:47
Rudi
Hallo,
AB
101.10.2012 05:0101.10.2012 05:01:00
22012.10.01 05:01:36.00901.10.2012 05:01:36
32012.10.01 05:01:39.00301.10.2012 05:01:39
42012.10.01 05:01:41.00301.10.2012 05:01:41
52012.10.01 05:01:42.00901.10.2012 05:01:42

ZelleFormatWert
B1TT.MM.JJJJ hh:mm:ss01.10.2012 05:01:00

ZelleFormel
B1=WENN(ISTZAHL(A1);A1;--LINKS(A1;10)+TEIL(A1;FINDEN(" ";A1)+1;8))

Gruß
Rudi

Anzeige
AW: VBA Excel - Unterschiedliche Zeitstempel
11.10.2012 12:32:42
Matthias
Hallo Rudi,
vielen Dank für die Antwort. Aber wie setze ich das ganze in VBA um?
Gruß
Matthias

AW: VBA Excel - Unterschiedliche Zeitstempel
11.10.2012 12:45:36
Rudi
Hallo,
füge die Formel per VBA in eine Hilfsspalte ein und hol die Daten mit Index/ Match. (Index/ Vergleich)
Gruß
Rudi
Ich kenne weder deine Mappe noch deinen Code

AW: VBA Excel - Unterschiedliche Zeitstempel
11.10.2012 12:48:36
Matthias
Hallo Rudi,
vielen Dank. Ich probiere erstmal Deine Vorschläge aus. vielleicht melde ich mich dann nochmal.
Gruß
Matthias

AW: VBA Excel - Unterschiedliche Zeitstempel
11.10.2012 14:11:47
Matthias
Hallo Rudi,
Deine Formel kann ich nachvollziehen.
Obwohl mir nicht ersichtlich ist wie das Datum quasi "umgedreht" wird.
Kannst Du das bitte nochmal erklären?
Liegt das Ergebnis als String oder als Zahl vor?
Mit vlookup sollen muss ja eine gewisse Datenkonsistenz herrschen, damit verglichen werden kann.
Weiterhin habe ich noch keine wirkliche Idee wie ich das in VBA umsetzen kann.
Ich versuche das Ganze nochmal ein wenig genauer zu erläutern.
Nach erfolgtem Datenimport befindet sich in meiner Arbeitsmappe ein Tabellenblatt mit dem Namen "neuesBlatt". Dieses ist z.B. wie folgt aufgebaut:
Spalte A Spalte B
Zeit Wert x
Zeile 4: 01.10.2012 05:01:35 313,234524
Zeile 5: 2012.10.01 05:01:36.009 326,763641
Zeile 6: 2012.10.01 05:01:39.003 329,636597
Zeile 7: 2012.10.01 05:01:41.003 331,543427
Ein weiteres Tabellenblatt mit dem Namen "Darstellung" hat nachdem ich das Makro "Uhrezeiterstellen()" ausgeführt habe, wie folgt aus:
Spalte A
Zeit
Zeile 4: 01.10.2012 05:01:35
Zeile 5: 01.10.2012 05:01:36
Zeile 6: 01.10.2012 05:01:37
Zeile 7: 01.10.2012 05:01:38
Zeile 8: 01.10.2012 05:01:39
Zeile 9: 01.10.2012 05:01:40
Zeile 10: 01.10.2012 05:01:41
Mittels vlookup werden diesen Zeitwerten dann die entspechnenden Werte aus Tabellenblatt "neuesBlatt" zugeordnet und anschließend die Datenreihe ausgefüllt. Hierzu die programmierte VBA -Anweisung
ThisWorkbook.Worksheets("Darstellung").Range(ThisWorkbook.Worksheets("Darstellung").Cells(5, x), ThisWorkbook.Worksheets("Darstellung").Cells(Endea, x)) = Application.WorksheetFunction.VLookup(ThisWorkbook.Worksheets("Darstellung").Range("A5:A" & Endea), ThisWorkbook.Worksheets(1).Range(Worksheets(1).Cells(4, 1), Worksheets(1).Cells(Endeb, x)), x)
Für einen eindeutigen Vergleich / Verweis müssen also die Zahlen und Zahlenformate beider Tabellen übereinstimmen. Soweit bin ich schonmal. Aber wie kann man das mit oben genannter Formel in VBA umsetzen?
Ich hoffe ich konnte mein Problem nochmals verdeutlichen und bedanke mich herzlich im voraus.
Mit feundlichen Grüßen
Matthias

Anzeige
AW: VBA Excel - Unterschiedliche Zeitstempel
11.10.2012 15:05:38
Rudi
Hallo,
nach dem Datenimport:
Sub Start()
FormelRein
Uhrzeit
End Sub
Sub FormelRein()
With Sheets("neuesBlatt")
With .Range(.Cells(4, 1), .Cells(4, 1).End(xlDown)).Offset(, 2)
.FormulaR1C1 = "=IF(ISNUMBER(RC[-2]),RC[-2],--LEFT(RC[-2],19))"
End With
End With
End Sub
Sub Uhrzeit()
Dim vntDate(), dteMin As Date, dteMax As Date, x
With Sheets("neuesBlatt")
dteMin = WorksheetFunction.Min(.Columns(3))
dteMax = WorksheetFunction.Max(.Columns(3))
x = Int((dteMax - dteMin) * 24 * 60 * 60) + 1
ReDim vntDate(1 To x, 1 To 2)
For x = 1 To UBound(vntDate)
vntDate(x, 1) = dteMin + (x - 1) / 86400
vntDate(x, 2) = _
WorksheetFunction.Index(.Columns(2), _
WorksheetFunction.Match(CDbl(vntDate(x, 1)), .Columns(3)))
Next
End With
With Sheets("Darstellung")
.Cells(4, 1).Resize(UBound(vntDate), 2) = vntDate
.Columns(1).NumberFormat = "DD.MM.YYYY hh:mm:ss"
End With
End Sub

Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige