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))
使用这些公式,工作日期函数效果很好。
感谢累积工作时间的想法!
我正在尝试编写一个公式(或 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))
使用这些公式,工作日期函数效果很好。 感谢累积工作时间的想法!