Excel 安排工作时间

Excel Schedule to work with hours

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

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

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

现在公式很基础,像这样:workday(A2;Sum(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 的另一部分,工作日期应该是自动计算的。 (我要给出第一个开始日期)

你可能会想到加一个累计工作时间的列,这个列会一直递增,但是一旦总数大于7,就会重新开始。

工作日期列随后可以使用此信息,一旦总数达到 > 7,它将移至下一个工作日。

所以你可以输入:

  • 单元格 B2 中的公式 - =IF(SUM(B1,A2)>7,A2,SUM(B1,A2))
  • 单元格 C3 中的公式 - =IF(SUM(B3,A4)>7,WORKDAY(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 行,我将此公式用于工作日期;

=WORKDAY(M14;(L15/7))

使用这些公式,工作日期函数效果很好。 感谢累积工作时间的想法!