Excel:小时/分钟到十进制值

时间:2014-02-15 13:41:06

标签: excel vba excel-vba

在此之前,我正在使用Excel 2010。

我正在尝试简化一个过程,以便从我运行的报告中获取信息,以秒为单位生成时间。我需要十进制时间而不是几小时,到目前为止这是我能想到的唯一解决方案。例如:

A1包含以秒为单位的时间。

1843 (seconds)

B1包含将秒数转换为小时的公式

=B1/(1440*60) This gives me 0:30:43

然后我必须计算剩下0:30:00的时间,这就是我需要的。

=IF(B1<$H$1,"ON TIME",SUM(B1-$H$1))

此公式我将它放在C2中,H1包含时间限制0:30:00,单元格格式为[h]:mm:ss。我用它来计算超过限制的时间。

一旦我有超过限制的时间,在这种情况下0:00:43秒,我必须将其转换为小数以获得我真正需要的所有这些并且为此我使用以下公式。

=C2*60*24

这个公式(放在R1中)给出了结果0.72,但我必须复制这个结果并将其粘贴到另一个单元格上,当我这样做并粘贴值时,我得到了这个。 0.71666666666667。即使单元格被格式化为带有2位小数的数字。它只会影响我在单元格中看到的内容,而不会影响单元格中的实际值。

现在,要解决这个问题,并获得正确的号码。我在S1中有另一个公式位置给我正确的数字,在复制并粘贴为值后,我得到了我需要的实际值。

=TRUNC(R1,2)

这给了我0.71,如果我复制并粘贴我从该公式获得的内容并将其粘贴为值,我将保持0.71。

有没有办法通过VBA或任何其他公式替代品来缩短这个过程?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果你想要如所示的十进制minutes的答案那么更容易将所有内容转换为代表minutes的十进制数字,例如将A1除以60并将H1乘以1440,因此假设A1中的秒值始终为greater而不是H1中的等值,则可以使用此单个公式

=FLOOR(A1/60-$H$1*1440,0.01)

格式为2位小数的数字,你需要得到0.71

如果要合并IF功能的“准时”部分,请使用此版本

=IF(A1/60>$H$1*1440,FLOOR(A1/60-$H$1*1440,0.01),"ON TIME")

如果H1未发生变化,您可以使用小数分钟替换公式中的$H$1*1440,例如30