相对于此处的Excel来说是新的。
我正在尝试根据每个任务的时间来制定时间表,就像这样:
我知道如何在日期和时间中增加几个小时,但是我还需要考虑其他一些事项:
我的想法是我可以将此表用于任何项目,并且只需知道每个任务所需的时间即可生成时间表。
为了使其更加复杂,我想添加另一列,当我实际完成任务时可以在其中写入,然后更新表的其余部分,如下所示:
我目前在开始和结束列中有一些庞大且公认的混乱公式,尽管我怀疑从头开始会更好。他们不会一直工作(不要跳过周末,不要计算上午8点至下午16点之间的小时数),它们如下:
开始: =IF(W9<>"", IF(TIME(HOUR(AA8), MINUTE(AA8), SECOND(AA8))<TIME(16,0,0),AA8,DATE(YEAR(AA8),MONTH(AA8),DAY(AA8))+1+TIME(8,0,0))+SUM(INT((WEEKDAY(AA8-{1,7})+DATE(YEAR(AA8),MONTH(AA8),DAY(AA8))+1+TIME(8,0,0)-AA8)/7)), "")=IF(W9<>"", IF(TIME(HOUR(AA8), MINUTE(AA8), SECOND(AA8))<TIME(16,0,0),AA8,DATE(YEAR(AA8),MONTH(AA8),DAY(AA8))+1+TIME(8,0,0))+SUM(INT((WEEKDAY(AA8-{1,7})+DATE(YEAR(AA8),MONTH(AA8),DAY(AA8))+1+TIME(8,0,0)-AA8)/7)), "")
结束:=IF(AB10="", IF(W10<>"", IF(TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1,0,0)>TIME(16,0,0), IF(Z10+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1, 0, 0)>TIME(16, 0, 0), IF(HOUR(DATE(YEAR(Z10),MONTH(Z10),DAY(Z10+1))+TIME(8,0,0)+ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0)+TIME(((((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8)-ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0))*8, 0, 0))=8, DATE(YEAR(Z10),MONTH(Z10),DAY(Z10+1))+TIME(8,0,0)+ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0)+TIME(((((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8)-ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0))*8, 0, 0)-(2/3), DATE(YEAR(Z10),MONTH(Z10),DAY(Z10+1))+TIME(8,0,0)+ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0)+TIME(((((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8)-ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0))*8, 0, 0)), Z10+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1, 0, 0)), Z10+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10), 0, 0))+SUM(INT((WEEKDAY(Z10-{1,7})+IF(TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1,0,0)>TIME(16,0,0), IF(Z10+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1, 0, 0)>TIME(16, 0, 0), IF(HOUR(DATE(YEAR(Z10),MONTH(Z10),DAY(Z10+1))+TIME(8,0,0)+ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0)+TIME(((((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8)-ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0))*8, 0, 0))=8, DATE(YEAR(Z10),MONTH(Z10),DAY(Z10+1))+TIME(8,0,0)+ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0)+TIME(((((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8)-ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0))*8, 0, 0)-(2/3), DATE(YEAR(Z10),MONTH(Z10),DAY(Z10+1))+TIME(8,0,0)+ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0)+TIME(((((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8)-ROUNDDOWN(((HOUR((TIME(HOUR(Z10),MINUTE(Z10),SECOND(Z10))))+IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1)-16)/8, 0))*8, 0, 0)), Z10+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10)+1, 0, 0)), Z10+TIME(IF(ISNUMBER(SEARCH("Concept", W10)), Y10/3, Y10), 0, 0))-Z10)/7)), ""), AB10+AC10)
答案 0 :(得分:0)
假设您的图片表的第一行在第3行中,而 End 列在D列中,请将下面的公式粘贴到D3,但在进行一些准备之前不要粘贴。 / p>
DayStart
,然后在其唯一的单元格中输入=Time(8,0,0)
。DayEnd
,然后在其唯一的单元格中输入=Time(16,0,0)
。这三个范围可以在工作簿中的任何位置,只要它们的范围包括粘贴了公式的工作表即可。假期将被视为休息日。工作时间可以随时更改。
=WORKDAY(C3,INT((((MOD(C3,1)-DayStart)+(B3/24))/(DayEnd-DayStart))),Holidays)+(MOD((((MOD(C3,1)-DayStart)+(B3/24))/(DayEnd-DayStart)),1)*(DayEnd-DayStart))+IF(ABS((((MOD(C3,1)-DayStart)+(B3/24))/(DayEnd-DayStart))-1)>(0.1^4),DayStart,(DayEnd-1))
这是我开发过程中复制的一些公式。
=WORKDAY(C3,INT(J3),Holidays)+K3
[K3] =(MOD(J3,1)*(DayEnd-DayStart))+IF(ABS(J3-1)>(0.1^4),DayStart,(DayEnd-1))
[J3] =(I3/(DayEnd-DayStart))
[I3] =(G3+F3)
[G3] =(MOD(C3,1)-DayStart)
[F3] =(B3/24)
[B3]保持小时数,而不是Time
,而是如图所示的表中的纯整数(不尝试小数)。
[C3]可能会出现问题,至少在您似乎拥有的格式下。
我使用了=DATE(2020,1,22)+TIME(8,0,0)
之类的公式来确保正确的日期。如果您打算使用表标题中的当前日期来定义C列中的日期,则会出现我预见的问题。
仅供参考,我发现您使用的日期格式不方便,因为我进行了长达64小时和几个假想假期的测试。因此,我需要一种ddd, mmm dd, yyyy hh:mm
之类的日期格式,包括完整的日期以及工作日。