在开始date和结束date的数周内平均分配价值

我想按照它的开始date和结束date( B4:C6 ),在周数( E3:J3 )上分配一个确定的值( D4:D6 ),如示例所示。

在这里输入图像说明

公式/脚本应该做以下事情:

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

以文本格式复制的示例:

  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 - 

也高兴提示/想法如何能够实现单一的步骤。

概念validation:

在这里输入图像说明

在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

find起始周数。 在B8中放置以下内容。

 =WEEKNUM($B4,21) 

第2步

find结束周数。 在C8中放置以下内容。

 =WEEKNUM($C4,21) 

第3步

确定一年中的最大周数。 感谢罗恩·罗森菲尔德为这个公式。 在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

确定是否平均值属于date标题或值为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年。 我怀疑它会在多年的开始和结束一周工作。

步骤的布局

在这里输入图像说明