我有一个日志数据文件,其中有结束时间,以及以毫秒为单位指定的操作持续时间。我想从结束时间中减去持续时间,以获取操作开始的时间。我该怎么做?
各列如下:
|EndTime |ElapsedTime|Logmessage|
|01:00:41.5| 412|Operation2|
|01:00:41.6| 260|Operation3|
|01:00:42.0| 1520|Operation1|
我想要的是这个:
|StartTime |EndTime |ElapsedTime|Logmessage|
|01:00:41.1|01:00:41.5| 412|Operation2|
|01:00:41.4|01:00:41.6| 260|Operation3|
|01:00:40.5|01:00:42.0| 1520|Operation1|
因此很明显,操作 1 虽然是在操作 2 和 3 之后记录的,但实际上是先开始的。
我尝试过简单地Elapsed
从EndTime
列中减去时间列。我尝试过使用以下Time
命令:
Time(0;0;[ElapsedTime]/1000)
但Time
显然忽略了毫秒。
答案1
只要 ElapsedTime 始终是小于 32768 的整数,
TIME(0;0;[ElapsedTime])/1000
应该可以工作。(我假设分号在函数中通常对你有用。在我的计算机上,我会说TIME(0,0,[ElapsedTime])/1000
,使用逗号。)
警告:“第二(s)” 参数必须TIME()
介于 0 和 32767 之间。如果持续时间超过 32767 毫秒(即 32.767 秒),则上述操作将失败。如果存在这种可能性,或者 ElapsedTime 可能有小数部分(例如 412.867)——或者可能为负数——那么 Máté 的答案会更好。
答案2
在 Excel 中,天数地址存储为整数,小时数和分钟数存储为分数。尝试以下操作:
EndTime-ElapsedTime/(24*60*60*1000)