员工间隔调度公式

我一直在尝试创build时间间隔为1.返回一个值是员工工作(1),另一个是Break(B),另一个是Lunch(L)。 我提到的列出的链接提供了一个类似的解决scheme,可以工作,但在列AP中的公式中仍然存在错误。 因为员工正在rest,所以应该返回False,但返回True。 我已经扭转了这个公式,看看是否有帮助,但是没有:

Excel:跟踪特定时刻的员工数量

我尝试了一个类似的公式,如下所示:

=IF(AND(K$3>=$C5,K$3<$F5),1,IF(AND(K$3>=$F5,K$3<$I5),"B",IF(AND(K$3>=$I5,K$3<=$D5),1,IF(AND(K$3>=$D5,K$3<=$E5),"L",IF(AND(K$3>=$E5,K$3<=$G5),1,IF(AND(K$3>=$G5,K$3<=$J5),"B",IF(AND(K$3>=$J5,K$3<=$H5),1,""))))))) 

计划表电子表格的剪切

唯一的问题是,如果我有员工分streamclass,那么员工只有开始和停止时间,第一次rest,然后在剩下的时间里显示rest时间员工正在工作。 任何帮助,将不胜感激! 再次,我宁愿从上面显示的链接去select第一个选项的路线。

如果我正确地理解了你,你想知道这个人是在什么时间进出。 这是我想出来的。

首先,你需要有一个帮助行(我在row 4显示0 (in)1 (out) 。由于数据没有sorting,我必须使用这个公式从cell J5 (根据需要调整)使其工作:

 =IFERROR(LOOKUP(2,1/($B$5:$I$5=J3),$B$4:$I$4),I5) 

VLOOKUP' with '1' in the 4th parameter or even使用VLOOKUP' with '1' in the 4th parameter or even会更容易, VLOOKUP' with '1' in the 4th parameter or even INDEX / MATCH也可以。

但无论如何,请尝试让我知道,如果这是你打算做的。

无论您的公式的复杂性如何,使用范围名称是一个好主意。 我用过这些:

 ╔═════════════╦══════════════════════════╗ ║ Range Name ║ Refers to ║ ╠═════════════╬══════════════════════════╣ ║ break_1 ║ =F:F ║ ║ break_1_end ║ =I:I ║ ║ break_2 ║ =G:G ║ ║ break_2_end ║ =J:J ║ ║ emp_times ║ =$K$3:$AU$3 ║ ║ in_time ║ =C:C ║ ║ lunch_end ║ =E:E ║ ║ lunch_start ║ =D:D ║ ║ out_time ║ =H:H ║ ╚═════════════╩══════════════════════════╝ 

这是公式:

 =IF(OR(AND(emp_times>=in_time,emp_times<break_1), AND(emp_times>=break_1_end,emp_times<lunch_start), AND(emp_times>=lunch_end,emp_times<break_2), AND(emp_times>=break_2_end,emp_times<out_time)),1, IF(OR(AND(emp_times>=break_1,emp_times<break_1_end), AND(emp_times>=break_2,emp_times<break_2_end)),"B", IF(AND(emp_times>=lunch_start,emp_times<lunch_end),"L",""))) 

修改公式:

 =IF(OR(AND(emp_times>=break_1,emp_times<break_1_end), AND(emp_times>=break_2,emp_times<break_2_end)), "B", IF(AND(emp_times>=lunch_start,emp_times<lunch_end), "L", IF(OR(AND(emp_times>=in_time,emp_times<break_1), AND(emp_times>=break_1_end,emp_times<lunch_start), AND(emp_times>=lunch_end,emp_times<break_2), AND(emp_times>=break_2_end,emp_times<out_time)), 1, ""))) 

你的公式不一致。 rest结束时间(10:15和15:15)计为1(“现在”),而午餐结束时间计为“L”。 如果这个事实被忽略了,那么上面的公式应该可以正常工作。

如果是故意的,那么你可能不得不改变lunch_end出现的两行,如下所示:

  • AND(emp_times>lunch_end,emp_times<break_2), – 公式的第3行

  • IF(AND(emp_times>=lunch_start,emp_times<=lunch_end),"L",""))) – 最后一行

而您的公式不会在列AP中产生任何错误。 由于员工时间增加15分钟,单元格AP3的值应为15:45,在您的示例中,该值应返回值1。

另一个提示:

每当嵌套IF时,最好使用Alt+Enter将公式扩展为多行,最好将其缩进。 这会使它更具可读性,而且不会让人感到恐惧。