首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用excel计算加班时数

用excel计算加班时数
EN

Stack Overflow用户
提问于 2016-04-16 18:22:30
回答 1查看 977关注 0票数 0

我试图制作计算加班时数的电子表格:如果任务是在下午2点以后开始的,则计算时间为一个半小时,如果任务是在凌晨12点以后开始的,则将时间计算为2小时,我在E列中写了以下公式:

代码语言:javascript
复制
 =IF(AND(B5>G1;B5<G2);D5*D1;D5*D2)

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-16 19:58:04

你的公式的问题是你认为12:00是午夜。或者24点。如果您查看G2,您将看到12:00 AM或(24:00)在Excel中,它存储为0。您的逻辑检查是检查是否小于零。假设你从不处理负面时间,你的结果总是错误的,因为任何时间都不少于零。

我会稍微改变你的布局,并在没有加班的情况下增加一个轮班3。当某人早上9点开始的时候会发生什么?

如果您必须保持原来的布局,我将修改单元格D5中的公式如下:

代码语言:javascript
复制
=HOUR(C5-B5)

然后确保单元格D1、D2、D5和E5都是通用格式,因为它们只是数字而不是实际时间。

下一组G2等于08:00

将E5中的公式更改为:

代码语言:javascript
复制
=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(开始时间= shift 1开始时间,然后乘以shift 1速率,如果(开始时间= shift 2开始时间,然后乘以shift 2速率,没有特殊比率))

另外要考虑的是,如果你正在观察实际的开始时间,而一个人在一次轮班开始,但在下一次轮班结束时,会发生什么?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36667987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档