在开始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年。 我怀疑它会在多年的开始和结束一周工作。
步骤的布局