我正在尝试编写一个公式(或一个vba代码,因为我打算将该代码导入到vba中)来计算给定工时的日期 .
将有两个主要变量;工作时间(小时):该行上的给定工作需要多少小时 . 工作日期(日期):是该工作开始的计划日期 .
这个计算将针对数千行进行 .
现在的公式非常基本,类似这样:工作日(A2; Sum(A2:$ A $ 2))问题是,A2(工作时间以小时为单位)是一个数字可以在0到最高之间几百个小时 . 正如你所看到的那样,每一行,总和数量都会增加,而且数量也会很大 . 如果我没有确定开始日期,那么日期几乎永远不会正确,因为工作时间可能短于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 回答
您可以考虑添加一个累计工作时间列,该列将继续增加,但一旦总数大于7,它将从头开始 .
然后,工作日期列可以使用此信息,一旦总计为
> 7
,它将移至下一个工作日 .所以你可以把:
单元格B2中的公式 -
=IF(SUM(B1,A2)>7,A2,SUM(B1,A2))
单元格C3中的公式 -
=IF(SUM(B3,A4)>7,WORKDAY(C3,1),C3)
然后将其复制到下面的其余行 .
Note: 假设您的VBA在一行中最多放置7个小时,如果工作时间更长,它会将剩余余额结转到下一行 . 如果VBA没有这样做,则工作时间列中需要额外的公式来解决该问题 .
我定制了累积工时列的想法并找到了解决方案 .
对于第15行,我将此公式用于累积工作时间列;
对于第15行,我使用此公式进行工作日期;
使用这些公式,工作日期功能非常有效 . 感谢累积的工作时间想法!