使用excel公式或excel vba分配资源之间的计划时间

我需要这样的输出。 我已经为每个月计划了几个小时,并且希望将两个资源之间的计划时间从开始date和结束date分开。 例如:对于6月份的经理angular色计划小时数是80.资源1从1月4日到15日工作,资源2从16月6日到9月30日工作,然后公式或代码应该在这两个资源之间拆分6个小时。 就像我下面所示

图片

有什么想法吗? 我不介意它是Excel公式还是vba代码

使用下面的公式我得到输出的工程师angular色,但不是经理angular色。

=IF(AND($D4<=F$3,$E4>=EOMONTH(F$3,0)),80,0) 

产量

我想知道这个公式是否适合你。

=ROUND((MAX(F$12-MAX($C13,E$12),0)-MAX(F$12-MAX($D13,E$12),0))*E$11/30,-1)

在这个例子中,列C和D保存资源的开始和结束date。 E12持有2017年4月1日的date,F12公式=EDATE(E12,1)尽可能复制到右侧。 您可以格式化这些date,只显示月份和年份按照您的表格,但公式期望它们是每个月的第一天。

在你的例子中,E $ 11的值为80(小时)。

它有点复杂和公式维护将是一个痛苦的屁股,但下面的公式粘贴到F2和复制下来,权似乎工作:

 =IF(OR(EOMONTH(F$3,0)<EOMONTH($D4,0),EOMONTH(F$3,0)>EOMONTH($E4,0)),0, IF(IF(EOMONTH($D4,0)=EOMONTH($E4,0),$E4-$D4,IF(EOMONTH($D4,0)=EOMONTH(F$3,0),EOMONTH(F$3,0)-$D4+1,IF(EOMONTH($E4,0)=EOMONTH(F$3,0),$E4-F$3+1,DAY(EOMONTH(F$3,0)))))<=7,1, IF(IF(EOMONTH($D4,0)=EOMONTH($E4,0),$E4-$D4,IF(EOMONTH($D4,0)=EOMONTH(F$3,0),EOMONTH(F$3,0)-$D4+1,IF(EOMONTH($E4,0)=EOMONTH(F$3,0),$E4-F$3+1,DAY(EOMONTH(F$3,0)))))<=15,2, IF(IF(EOMONTH($D4,0)=EOMONTH($E4,0),$E4-$D4,IF(EOMONTH($D4,0)=EOMONTH(F$3,0),EOMONTH(F$3,0)-$D4+1,IF(EOMONTH($E4,0)=EOMONTH(F$3,0),$E4-F$3+1,DAY(EOMONTH(F$3,0)))))<=23,3,4))))/4*F$2 

我会更好地处理一些中间单元格计算,以避免重复嵌套的if语句。 我相信它可以被简化。

POC