我一直在尝试按1的间隔创建计划。返回值是员工正在工作(1),另一个是Break(B),另一个是Lunch(L)。我提到列出的链接提供了一个可以工作的类似解决方案,但是在AP列的公式中仍然存在错误。它应该返回False,因为员工休息,但返回True。我已经颠倒了公式,看看这是否会有所帮助,但事实并非如此:
Excel: track number of employees at a given moment
我尝试了类似的公式,如下所示:
=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,"")))))))
唯一的问题是,如果我让员工分班,员工只有开始和停止时间以及第一次休息,然后在员工工作的其余时间显示休息。任何帮助,将不胜感激!同样,我更愿意从上面显示的链接开始第一个选项的路线。
答案 0 :(得分:0)
使用范围名称是个好主意,无论公式的复杂程度如何。我使用过这些:
╔═════════════╦══════════════════════════╗
║ 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, "")))
您的公式存在不一致之处。休息的结束时间(10:15和15:15)计为1(&#34;存在&#34;),而午餐的结束时间计为&#34; L&#34;。如果忽略了这个事实,那么上面的公式应该可以正常工作。
如果是有意的,那么你可能需要更改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
将公式扩展到多行,最好还是缩进它。它会让它更具可读性并且不那么令人生畏。
答案 1 :(得分:0)
如果我理解正确,你想知道这个人进出的时间。这就是我的想法。
首先,您需要有一个帮助行(我放入row 4
的地方显示0 (in)
和1 (out)
。由于数据未排序,我必须使用此公式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
INDEX / MATCH也会更容易。
但无论如何,如果你打算这样做,请试着告诉我。