Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel的工作时间安排_Excel_Vba_Date_Schedule - Fatal编程技术网

Excel的工作时间安排

Excel的工作时间安排,excel,vba,date,schedule,Excel,Vba,Date,Schedule,我正在尝试编写一个公式(或vba代码,因为我无论如何都要将该代码导入vba)来计算给定工作时间的日期 将有2个主要变量; 工作时间(小时):该排的给定工作需要多少小时。 工作日期(Date):是该作业开始的计划日期 这一计算将针对数千行进行 现在的公式非常基本,类似这样:workday(A2;Sum(A2:$A$2)) 问题是,A2(以小时为单位的工作时间)是一个介于0,1到数百小时之间的数字。 正如您所看到的问题,每行的和数都会增加,并给出大量的数字。如果我不确定开始日期,日期几乎永远不会正确

我正在尝试编写一个公式(或vba代码,因为我无论如何都要将该代码导入vba)来计算给定工作时间的日期

将有2个主要变量; 工作时间(小时):该排的给定工作需要多少小时。 工作日期(Date):是该作业开始的计划日期

这一计算将针对数千行进行

现在的公式非常基本,类似这样:workday(A2;Sum(A2:$A$2)) 问题是,A2(以小时为单位的工作时间)是一个介于0,1到数百小时之间的数字。 正如您所看到的问题,每行的和数都会增加,并给出大量的数字。如果我不确定开始日期,日期几乎永远不会正确,因为工作时间可能短于7小时,也可能长于7小时

我在这里的主要目标是,当每个工作日的总工作时间超过7小时时,增加工作日,并将额外的小时或分钟转移到下一个工作日

所以应该是这样的,

工作时间------------------工作日期

2-------------------2017年1月1日

4-------------------2017年1月1日

3-------------------2017年1月2日

4-------------------2017年1月2日

2-------------------2017年1月3日


工作时间来自vba的另一部分,工作日期应自动计算。(我将给出第一个开始日期)

您可以考虑添加一个累积工作时间列,该列将不断增加,但一旦总数大于7,它将重新开始

然后,“工作日期”列可以使用此信息,一旦总数为7,它将移动到下一个工作日

所以你可以说:

  • 单元格B2中的公式-
    =IF(SUM(B1,A2)>7,A2,SUM(B1,A2))
  • 单元格C3中的公式-
    =IF(总和(B3,A4)>7,工作日(C3,1),C3)
然后将其复制到下面的其余行


注意:假设您的VBA在一行中最多放置7小时,如果工作时间更长,则将剩余余额结转到下一行。如果VBA没有这样做,则需要在“工作时间”列中添加其他公式来解决该问题。

您可以考虑添加一个“累计工作时间”列,该列将不断增加,但一旦总数大于7,它将重新开始

然后,“工作日期”列可以使用此信息,一旦总数为7,它将移动到下一个工作日

所以你可以说:

  • 单元格B2中的公式-
    =IF(SUM(B1,A2)>7,A2,SUM(B1,A2))
  • 单元格C3中的公式-
    =IF(总和(B3,A4)>7,工作日(C3,1),C3)
然后将其复制到下面的其余行


注意:假设您的VBA在一行中最多放置7小时,如果工作时间更长,则将剩余余额结转到下一行。如果VBA没有这样做,则需要在“工作时间”列中添加其他公式来解决该问题。

我自定义了“累计工作时间”列的想法,并找到了解决方案

对于第15行,我将此公式用于累积工作时间列

=IF(K15>7;SUM(K15;MOD(L14;7));IF(L14>7;SUM(K15;MOD(L14;7));SUM(L14;K15)))
对于第15行,我将此公式用于workdate

=WORKDAY(M14;(L15/7))
使用这些公式,工作日期函数非常有效。
谢谢你的累积工作时间的想法

我定制了累积工作时间栏的想法,并找到了解决方案

对于第15行,我将此公式用于累积工作时间列

=IF(K15>7;SUM(K15;MOD(L14;7));IF(L14>7;SUM(K15;MOD(L14;7));SUM(L14;K15)))
对于第15行,我将此公式用于workdate

=WORKDAY(M14;(L15/7))
使用这些公式,工作日期函数非常有效。
谢谢你的累积工作时间的想法

感谢您的回复,但是使用这些公式,B列只会增加2行。所以,如果我得到7个小时,5行(比如1,1,1,2,2小时),那么它就不能正常工作,C列公式也不正确。它指的是它自己。你确定你完全按照指示走了吗?你可能想看看这个上传的示例:所以你写的公式实际上是B3和C4,但是如果一个专栏的“工作时间”大于7呢?用你写的B公式,如果超过7,它将被直接写出来。但是假设A5单元格是22天甚至100天,那么它应该在计划中增加3个工作日。对于100天,当然应该增加3天以上:)同样,对于B行的公式,它只给出2个选项;总和低于7,则为总和,或总和大于7,则为正常工作时间。但是如果总和是10,那么第二天的值应该是a加3。谢谢你的回答,但是使用这些公式,B列只会增加2行。所以,如果我得到7个小时,5行(比如1,1,1,2,2小时),那么它就不能正常工作,C列公式也不正确。它指的是它自己。你确定你完全按照指示走了吗?你可能想看看这个上传的示例:所以你写的公式实际上是B3和C4,但是如果一个专栏的“工作时间”大于7呢?用你写的B公式,如果超过7,它将被直接写出来。但是假设A5单元格是22天甚至100天,那么它应该在计划中增加3个工作日。对于100天,当然应该增加3天以上:)同样,对于B行的公式,它只给出2个选项;总和低于7,则为总和,或总和大于7,则为正常工作时间。但是如果总和是10,那么第二天的值应该是+3。