我希望在周数(D4:D6
)的开始和结束日期(E3:J3
)上平均分配一定值(B4:C6
),如下所示示例
公式/ 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 -
也很高兴有关如何实现单一步骤的提示/想法。
答案 0 :(得分:1)
概念证明:
将以下公式放入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))
现在这是一个来自多个单元格的构建公式,我用这些公式代替公式来结束上面的怪物。细分如下。
查找开始周数。将以下内容放在B8中。
=WEEKNUM($B4,21)
查找结束周数。将以下内容放在C8中。
=WEEKNUM($C4,21)
确定一年中的最大周数。感谢Ron Rosenfeld的这个公式。将以下内容放入D8。
=MAX(WEEKNUM(DATE(YEAR($B4),12,{28,29,30,31}),21))
确定一周是在同一年还是在下一年。将以下内容放在E8中。
=C8-B8
确定周数。将以下内容放在F8中。
=IF(E8<0,D8-B8+C8+1,C8-B8+1)
平均每周的价值。将以下内容放在G8中。
=D4/F8
确定平均值是属于日期标题还是属于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年。我怀疑它会在多年的开始和结束周工作。
步骤布局