VBA - Dátum- és időérték összevonása / idő hozzáadás

VBA - Dátum- és időérték összevonása / idő hozzáadás
2017-10-30T00:40:12+01:00
2017-10-30T09:10:38+01:00
2022-12-04T21:00:40+01:00
nsimon
Sziasztok!

Access-ből, VBA-ban egy Excel (pontosabban CSV) fájl 7. sorától egy dátum- és egy időértéket szeretnék összegezni, majd ehhez hozzáadni egy hosszértéket (szintén idő). Ezt eljátszani az előző sorral is (kivéve a hosszérték hozzáadást), majd DateDiff-fel megvizsgálni, hogy a két dátum/idő közötti különbség nagyobb-e 3 sec-nél.

Cellák:
Date (A) /  Start time (B) /  Duration (C)
2017.10.30.  /  11:30:40  / 00:00:15  ->  "2017.10.30. 11:30:55"
2017.10.30. 11:30:54  / 00:00:10  ->  "2017.10.30. 11:30:54"
...
(itt pl. kisebb a különbség, mint 3 sec, tehát megfelel)

Eddig jutottam:

...
Set ea = CreateObject("Excel.Application") ea.Visible = False ea.Workbooks.OpenText FileName:=sfile, DataType:=xlDelimited, Semicolon:=True, Local:=True Set wb = ea.ActiveWorkbook Set ws = wb.Worksheets(1) ...
Dim Ell As Long
For Ell = 7 To ws.Cells(Rows.Count, "A").End(xlUp).Row Step 1 If DateDiff("s", DateValue(ws.Cells(Ell, "A")) + TimeValue(ws.Cells(Ell, "B")), DateValue(ws.Cells(Ell - 1, "A")) + TimeValue(ws.Cells(Ell - 1, "B")) + TimeValue(ws.Cells(Ell - 1, "C"))) > 3 Then ws.Cells(Ell, "A").Interior.Color = 255 ws.Cells(Ell, "B").Interior.Color = 255 End If Next Ell
Próbáltam csak a Start time-ot összehasonlítani az előző sor Start time + Duration-nel, de ez sem működött tökéletesen:
(gondolom, a rejtett dátum érték miatt - 1900.01.01. -, ami az időnél is ott van, csak nem látszódik)

If DateDiff("s", ws.Cells(Ell, "B").Value, ws.Cells(Ell - 1, "B").Value + ws.Cells(Ell - 1, "C").Value) > 3 Then ws.Cells(Ell, "B").Interior.Color = 25 End if
Próbáltam DateValue + TimeSerial-lal, de az első sorban a Hosszt még akkor is hozzá kellene adni valahogy, amire nem jöttem rá.

Előre is köszönöm, ha tudtok segíteni.

Üdv,
N
Mutasd a teljes hozzászólást!
Elmulasztottad megmondani, mit jelent a "nem működött tökéletesen", így csak tippelni tudok...
A cellákba elvileg rögtön dátumidő formában kerülnek be az adatok, de ez nagyon függ az Excel és a Windows nyelvi beállításaitól!!! Ezért legvalószínűbb, hogy valamelyik adatot nem sikerül a rendszernek konvertálni.
Ha nem sikerül az automatikus konverzió, akkor a DateValue és TimeValue sem fog működni, hiszen ugyanazon szabályok szerint konvertálna. Ha viszont sikerül, akkor ez a két függvény is felesleges.

Mellékeltem egy példát, ami (nálam) működik a Te adataiddal.
Mutasd a teljes hozzászólást!
Csatolt állomány

  • Nagyon köszönöm a segítségedet, tényleg feleslegesek voltak a függvények.
    Mint kiderült, azért nem működött tökéletesen, mert a DateDiff elé nem tettem Abs függvényt, így csak akkor talált hibát, ha pozitív volt a különbség (>3). (Mivel a DateDiff értékét nem írattam ki, ezt csak a te fájlodból vettem észre.)
    Még egyszer köszönöm, ezzel sokat segítettél!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd