在Excel中计算加class时间

我试图制作一个计算加class时间的电子表格,如下所示:如果任务在下午2点之后开始,那么如果任务在上午12点之后开始,那么小时计算为一个半小时,计算为2小时,我写了下面的公式在E栏中:

=IF(AND(B5>G1;B5<G2);D5*D1;D5*D2) 

但是我得到错误的结果,我哪里错了?

谢谢

在这里输入图像说明

你的公式的问题是,你正在考虑午夜12点。 或24:00。 如果你看G2,你会看到在上午12:00或(24:00)在Excel中它被存储为0.您逻辑检查是检查,如果有任何东西是小于零。 假设你从不处理负面的时间,你的结果总是错误的,因为没有时间小于零。

我会改变你的布局,并添加一个没有加class的class次。 当有人在上午9点开始时会发生什么?

如果你必须保持你的布局,我会改变你的公式在单元格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点看到一个单元格的时间是12点,但是在那个单元格中真正存储的实际值是0.5,因为它是一天中的一半。 24:00不存在Excel公式将它视为0,如果它提供作为公式的input。 VBA不会接受它。 有效的Excel时间范围从00:00到23:59。

现在已经说了这个,如果你严格看8小时轮class,只关心开始时间,你可以简单地做一个if语句说IF(开始时间=移位1开始时间,然后乘以移位1率,IF(开始时间=class次2的开始时间,然后乘以class次2的速度,没有特别的速度))

要考虑的其他事情,如果你正在看实际的开始时间,一个人在一个class次开始,但在下一个class次结束,会发生什么?