我需要帮助计算超过 40 小时的小时数。这是一个工资电子表格,我想计算加班时间。
如果 Q4 大于 40 小时,则从 Q4 中减去 40 小时并显示差值的小时数。如果单元格小于 40 小时,则返回 0。
以下是我所拥有的:
=IF(Q4>40,Q4-40,0)
但是,当针对包含 49:23 的单元格进行计算时,它始终返回 00:00
源单元格是自定义格式的 [HH]:MM,因为在计算单元格以获取总小时数时,它不会显示超过 12 的小时数。
答案1
Excel 将时间(和日期)存储为天。所选的显示格式对此没有影响(并且与您的问题无关)。
你需要做数学题天,而不是您显示的内容。如果您想检查“> 40 小时”,请检查“> 40/24 天”。
那就=IF(Q4>40/24,Q4-40/24,0)
作为你的例子吧。
答案2
单元格 Q4 中的值似乎是 DateTime。在 Excel 中,它存储为一个数字,其中整数部分是天数,小数部分是一天中的时间。要获得小时数而不是天数,您需要乘以 24。以下公式将获得超过 40 的小时数。
=IF(Q4*24>40,Q4*24-40,0)
如果 Q4 包含 49:23,则此公式返回 9.3833。确保包含加班时间的单元格格式为数字(或“常规”)而不是时间。
如果要忽略小时的分数,请使用以下INT
函数:
=IF(Q4*24>40,INT(Q4*24-40),0)
正如 Scott 在他的评论中指出的那样(感谢 Scott),Q4*24-40
在公式中重复 是不雅的,如果需要更改公式,可能会导致错误。第一个公式的更好版本是:
=MAX(Q4*24-40,0)
第二个更好的版本是:
=MAX(INT(Q4*24-40),0)
Q4*24
这些之所以有效,是因为任何小于的时间都会小于零40
,所以函数将返回 0 而不是。Q4*24-10
MAX
Q4*24-40