Excel使用小时计划

时间:2017-07-21 08:40:37

标签: excel vba date schedule

我正在尝试编写一个公式(或vba代码,因为我要将该代码导入vba),以计算给定工时的日期。

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

此计算将针对数千行进行。

现在公式非常基本,如下所示:工作日(A2;总和(A2:$ A $ 2)) 问题是,A2(工作时间以小时计)是一个数字,可以在0.1到数百小时之间。 正如你所看到的那样,每一行,总和数量都会增加,而且数量也会很大。如果我没有确定开始日期,那么日期几乎永远不会正确,因为工作时间可能短于7小时或大约7小时。

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

所以看起来应该是这样的;

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

2 ------------------------- 01.01.2017

4 ------------------------- 01.01.2017

3 ------------------------- 02.01.2017

4 ------------------------- 02.01.2017

2 ------------------------- 03.01.2017

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

2 个答案:

答案 0 :(得分:0)

您可以考虑添加一个累计工作时间列,该列将继续增加,但一旦总数大于7,它将从头开始。

工作日期列可以使用此信息,一旦总计为explode(',', $selector),它将移至下一个工作日。

所以你可以说:

  • 单元格B2中的公式 - > 7
  • 单元格C3中的公式 - =IF(SUM(B1,A2)>7,A2,SUM(B1,A2))

然后将其复制到下面的其余行。

enter image description here

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

答案 1 :(得分:0)

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

对于第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))

使用这些公式,工作日期功能非常有效。 感谢累积的工作时间理念!