excel 按开始日期和结束日期将值平均分配到周

lsmd5eda  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(231)

我想将某个值(D4:D6)按其开始日期和结束日期(B4:C6)平均分配给周数(E3:J3),如示例所示。

公式/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  -

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

b4lqfgs4

b4lqfgs41#

概念验证:

将以下公式放入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

确定一年中的最大周数。感谢罗恩·罗森菲尔德给出这个公式。将以下内容放入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)

第六步

计算每周的平均值。将以下内容放入G8。

=D4/F8

步骤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年的蔓延在工作周。我有严重的怀疑,它将工作超过多年的开始和结束周。
台阶布置

相关问题