当h = 0时,修复格式错误的时间'hh:nn:ss'

时间:2012-08-07 15:55:11

标签: excel vba excel-formula

我正在做一份报告,计算人们确定工资的时间。我们从服务器提取报告并将其粘贴到Excel中进行计算。我在提取数据时遇到了一个问题:如果他们登录的时间不到一小时,我们的公式就不起作用了:

=IF(E159="","",((HOUR(E159)+(MINUTE(E159)+(SECOND(E159)/60))/60)))

如果时间为#value,则会出现错误(:34:15),但如果时间为00:34:15,则表示没问题。

格式化单元格似乎不起作用。

我想浏览此专栏并将00添加到缺少它的所有值中,我需要一些帮助或指导。

Another question on SO看起来可能有所帮助,但我不确定如何使用它。

1 个答案:

答案 0 :(得分:3)

假设tiem位于上述公式的单元格E159中,您可以在时间开头附加0。这将修复所有小时缺失的时间,不会影响其他行。

="0"&E159

然后,您可以使用此修改替换原始公式中的所有E159引用,以使其如下所示:

=IF(E159="","",((HOUR("0"&E159)+(MINUTE("0"&E159)+(SECOND("0"&E159)/60))/60)))

虽然很难阅读,但它可以解决问题。

虽然这回答了你的问题。我认为有更好的方法来实现这个公式。

看起来你正在寻找的最终结果是转换为小时的时间,将mulutes和seconds作为下一小时的分数。你可以这样做:

=E159*24

这将为您提供与原始公式相同的结果。 然后将其与我的第一个答案结合起来得到一个看起来像的公式:

=("0" & E159)*24

这种方法更容易阅读/编辑,并提供相同的输出。

为什么会这样做

Excel将所有日期存储为整数,并将所有时间存储为一天的分米%。 因此,当Excel存储12小时时,它将其保存为.5,因为它是一天的一半。 通过将时间输出除以24,我们将整个时间值从一天的百分比转换为小时百分比。