这是我所拥有的屏幕截图
我想要做的是让每个人的工作时间都如图所示发布,或者像这样发布工作时间,然后在最后得到总工作时间。
我遇到的问题是如何让 Excel 意识到有些员工在凌晨 12 点后还在工作。我得到的数值总是负数。我需要的公式是什么?还是我需要修改我的图表?如果我确实需要修改图表,我需要做什么,之后的公式又应该是什么?
答案1
要计算班次超过午夜时的总小时数:
假设开始时间为H5
,单元格采用 TIME 格式。
假设结束时间为I5
,单元格采用 TIME 格式。
然后对于 J5 使用以下公式:=IF(I5-H5<0,HOUR((I5+1)-H5),HOUR(I5-H5))
并为该单元格赋予 GENERAL 或 DECIMAL 单元格格式。
基本上,使用的逻辑是:
如果结果为负数(即,轮班超过午夜),
则在减去开始时间之前,在结束时间上加 +1(天,即 24 小时),
否则结束时间 - 开始时间。
(为什么添加 +1 而不是 24 或其他内容体现在 excel 内部存储时间值的方式上,而解释实际上超出了这个答案的范围。)
您可能需要使用不太显眼的计算区域来计算每个班次的小时数,或者使用隐藏的列,然后将其加在一起并将数字返回到总数。
答案2
另一种方法是将所有内容存储为日期+时间(将日期和时间完整指定为单个数字)。函数 NOW 会自动执行此操作,但仅适用于当前时间。您可以通过添加 DATE 和 TIME 来创建条目(日期存储为连续整数,表示自参考日期以来的天数;时间存储为一天的小数)。您可以使用函数或将数学运算合并到公式中来存储日期+时间值。
Excel 时间和日期函数基于该表示形式。然后,正常的 Excel 日期/时间数学运算将正常工作。要自定义存储值的显示方式,请使用内置的日期和时间格式函数。在大多数情况下,它将忽略与显示格式无关的日期+时间值部分。