您的公式的问题是,您正在考虑将午夜12:00 AM。或24:00。如果查看G2,您将在Excel中看到12:00 AM或(24:00),它将存储为0。您的逻辑检查是检查是否小于零。假设您从不处理负时间,那么结果将永远是错误的,因为任何时间都不小于零。
我会稍微更改您的布局,并添加没有加班的班次3。当某人在9 AM开始时会发生什么?
如果您必须保持布局不变,那么我将在单元格D5中将您的公式更改为:
=HOUR(C5-B5)
然后确保单元格D1,D2,D5和E5都是通用格式,因为它们只是数字而不是实际时间。
下一组G2等于08:00
将E5中的公式更改为:
=IF(B5<G2,D5*D2,IF(B5>=G1,D5*D1,D5))
or
=D5*IF(B5<G2,D2,IF(B5>=G1,D1,1))
看看是否能进一步解决您的问题。
需要注意的一件事是,Excel以十进制格式存储时间,这确实会让您失望。当您在一个单元格中看到12:00 PM时,您可能会认为自己正在处理12,但是excel实际存储在该单元格中的是0.5,因为这是一天的一半。24:00不存在如果将Excel公式作为公式的输入提供,则Excel公式会将其视为0。VBA不会接受。有效的Excel时间范围是从00:00到23:59。
现在,如果您严格按照8小时制轮班,并且只关心开始时间,那么您可以简单地执行if语句,说IF(开始时间=班次1开始时间,然后乘以班次1比率IF(开始时间) =班次2的开始时间,然后乘以班次2的比率(无特殊比率))
如果您正在查看实际的开始时间,并且一个人开始一个班次但在下一个班次结束时,还有其他需要考虑的事情?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句