关于excel:模拟时间的换算

Conversion of simulation time

我正在运行一个模拟(时间长度:100 秒),结果导出到包含两列的 csv。第一个是以秒为单位的"时间"。它包含十进制数字。模拟步骤是可变的。我需要将十进制数转换为 hh:mm:ss 格式。

在 Excel 中将单元格格式从数字更改为时间不是解决方案,因为丢失了模拟步骤。

1
2
3
4
5
6
7
8
9
10
0              00:00:00
0,02           00:28:48 WRONG
0,04           00:57:36 WRONG
0,066          01:35:02 WRONG
0,0998         02:23:43 WRONG
0,14374        03:26:59 WRONG
0,200862       04:49:14 WRONG
0,2751206      06:36:10 WRONG
0,37165678     08:55:11 WRONG
0,497153814    11:55:54 WRONG

我希望格式 HH:MM:SS 保持两个模拟瞬间之间的步长

1
2
3
4
5
6
7
8
0              00:00:00
0,02           00:00:00
0,04           00:00:00
........
1,007964       00:00:01
1,090020       00:00:01
......
100            00:01:40


Excel 将日期/时间存储为双精度 - 整数部分是自 1899 年 12 月 31 日以来的天数 - 所以 1 变为 1900-01-0160 变为 1900-02-29,等等。小数部分是时间,作为一整天的一小部分 - 0.5 是中午 12 点。

因此,0.1 的值是 2 hours, 24 minutes,而不是 100 milliseconds

这意味着您的代码为您编写的内容提供了完全正确的输出,但不是您想要编写的内容。

您实际上想要的是 TIME 函数 - 它接受小时、分钟和秒,并输出如下所示的时间值:

1
2
3
4
5
=TIME(01, 23, 45)
    1:23 AM

=TEXT(TIME(01, 23, 45),"hh:mm:ss")
    01:23:45

DATETIME 函数也"溢出"。也就是说=TIME(0, 0, 65)和写=TIME(0, 1, 5)一样,都给1 minute, 5 seconds.

它们也"下溢",所以 TIME(0, 2, -55) 也会给出 1 minute, 5 seconds (并且 =DATE(1900,3,0)1900-02-29=DATE(1901,3,0)1901-02-28)


使用公式:

=TIME(0,0,SUBSTITUTE(E12,",","."))

如果格式使用 , 而不是 .使用功能。 =TIME(0,0,E12)

相应地更改单元格引用。

结果:

enter