我正在尝试为工作安排时间表,并且我在一个列中列出了员工工作时间的下拉列表,我希望它显示它旁边的工作时间。即:
Column B (Selected from a drop down menu) Column C 6:00 - 14:30 to display 8 as it is an 8 hour shift 10:00 - 15:00 to display 5 as it is an 5 hour shift
有没有办法做到这一点?
答案 0 :(得分:0)
因此,为了清楚起见,我将在几列中逐步进行开发。这些可以组合成一个难以理解的公式,但这对您没有帮助。您可以执行我在这里建议的操作,然后使用计算隐藏列。
假设您的时间在A列中。您可以在第一行中执行以下操作(如果您有标题,则假设第1行,可能是第2行),然后向下复制公式。在B列中,放置了=search("-",A1)
,它指示-符号在哪里。在C列中,我第一次使用=left(A1,B1-2)
作为字符串,它使第一个字符最多到破折号前的2。在DI列中有=mid(A1,B1+2,5)
,它从破折号到末尾两个字符(如果只有4个字符,则复制4个而不是5个字符),最后在E列中,我们找到所需的结果,{ 1}}。
那就是你问的。如果您想增加分钟数,可以使用=HOUR(timevalue(D1)-timevalue(C1))
。最后,如果存在22:00-6:00墓地转移,则需要为其添加逻辑。
您还可以通过在B列中使用公式=MINUTE(timevalue(D1)-timevalue(C1))
然后放入=split(A1,"-")
因此,如果您真的想要一个公式,可以为=HOUR(timevalue(C1)-timevalue(B1))
,该公式将第二个部分减去第一部分并转换为小时。
如果您想在午夜时分进行自动换行,=hour(INDEX((split(A1,"-")),2)-INDEX((split(A1,"-")),1))
应该可以解决问题。
更新:工作表将拆分产生的时间识别为时间。因此,如果您愿意保留会议记录,那么如果在B1中放置=iferror(hour(INDEX((split(A1,"-")),2)-INDEX((split(A1,"-")),1)),24-hour(INDEX((split(A1,"-")),1)-INDEX((split(A1,"-")),2)))
,则D1可以包含=split(A1,"-")
。它甚至可以为22:00-2:00提供正确的答案。
答案 1 :(得分:0)
创建一个表,其中包含用于轮班的列(如果选择了该方法,则可能是用于验证的列表),并且在相应轮班持续时间的右侧紧随其后的列。我将该表命名为Larry
。然后在C2中(假设您的第一个下拉列表在B2中):
=ArrayFormula(vlookup(B1:B,Larry,2,0))