开始日期和结束日期在几周内平均分配价值

时间:2017-08-23 11:12:23

标签: excel excel-formula week-number

我希望在周数(D4:D6)的开始和结束日期(E3:J3)上平均分配一定值(B4:C6),如下所示示例

enter image description here

公式/ vba脚本应该执行以下操作:

  • 检查开始日期和结束日期的周数
  • 将值除以开始日期和结束日期之间的周数
  • 将值放在同一行的匹配列中

要复制的文本格式示例:

                                2017        2018        
    Start       End       Value 50  51  52  1   2   3
    26.12.2017  04.01.2018  20  -   -   10  10  -   -
    12.12.2017  24.12.2017  50  25  25  -   -   -   -
    11.12.2017  10.01.2018  60  12  12  12  12  12  -

也很高兴有关如何实现单一步骤的提示/想法。

1 个答案:

答案 0 :(得分:1)

概念证明:

enter image description here

将以下公式放入E4并向下和向右复制

=IF(WEEKNUM($C4,21)-WEEKNUM($B4,21)<0,IF(OR(E$3>=WEEKNUM($B4,21),E$3<=WEEKNUM($C4,21)),$D4/IF(WEEKNUM($C4,21)-WEEKNUM($B4,21)<0,MAX(WEEKNUM(DATE(YEAR($B4),12,{28,29,30,31}),21))-WEEKNUM($B4,21)+WEEKNUM($C4,21)+1,WEEKNUM($C4,21)-WEEKNUM($B4,21)+1),0),IF(AND(E$3>=WEEKNUM($B4,21),E$3<=WEEKNUM($C4,21)),$D4/IF(WEEKNUM($C4,21)-WEEKNUM($B4,21)<0,MAX(WEEKNUM(DATE(YEAR($B4),12,{28,29,30,31}),21))-WEEKNUM($B4,21)+WEEKNUM($C4,21)+1,WEEKNUM($C4,21)-WEEKNUM($B4,21)+1),0))

现在这是一个来自多个单元格的构建公式,我用这些公式代替公式来结束上面的怪物。细分如下。

第1步

查找开始周数。将以下内容放在B8中。

=WEEKNUM($B4,21)

第2步

查找结束周数。将以下内容放在C8中。

=WEEKNUM($C4,21)

第3步

确定一年中的最大周数。感谢Ron Rosenfeld的这个公式。将以下内容放入D8。

=MAX(WEEKNUM(DATE(YEAR($B4),12,{28,29,30,31}),21))

第4步

确定一周是在同一年还是在下一年。将以下内容放在E8中。

=C8-B8

第5步

确定周数。将以下内容放在F8中。

=IF(E8<0,D8-B8+C8+1,C8-B8+1)

第6步

平均每周的价值。将以下内容放在G8中。

=D4/F8

STEP 7

确定平均值是属于日期标题还是属于0(如果您想要实际的破折号,而不仅仅将0格式化为破折号,则将0更改为 - 。将以下公式放在H8中。

=IF($E8<0,IF(OR(E$3>=$B8,E$3<=$C8),$G8,0),IF(AND(E$3>=$B8,E$3<=$C8),$G8,0)) 

根据需要将H8公式复制到右侧和下方。

警告:在工作周内可以工作1年。我怀疑它会在多年的开始和结束周工作。

步骤布局

enter image description here