好的,这有点令人费解(至少对我而言),这就是为什么我在这里寻求帮助。
我有一张在预定月份购买的苹果表。然后,我需要将它们交付出去,所以我需要知道我需要多少交付能力。
从第一张桌子开始,在1月1日,我有100个苹果存储,有100个备用存储,要在1月18日之前购买150个苹果,在2月18日之前购买250个苹果,依此类推,等等。
然后我需要将这些苹果标记到第二张表中列出的交货时间表。假定存储和储备中的所有内容均以最接近的可用交付方式交付。
但是,如果2月1日到来时,我发现只能运送150个苹果中的100个,则必须安排剩余的50个苹果在1月18日到2月18日最接近交货
类似地,当我的购买计划超出我的交付计划时,超出的金额将被计为最接近的可用交付的一部分。例如,我的最后一次交货仅计划到8月底,而我的购买计划则延长到10月。所以我八月份的交货时间将是8月18日,9月18日和10月18日的总和。
购买时间表(输入):
|A |B |C |D |
1 |Desc/Input Date|30-Jan-18|31-Jan-18|01-Feb-18|
2 |Storage |100 |50 |50 |
3 |Reserve |100 |50 |50 |
4 |Jan-18 |150 |50 |50 |
5 |Feb-18 |250 |250 |250 |
6 |Mar-18 |150 |150 |150 |
7 |Apr-18 |100 |100 |100 |
8 |May-18 |25 |0 |0 |
9 |Jun-18 |50 |50 |50 |
10|Jul-18 |100 |100 |100 |
11|Aug-18 |200 |200 |200 |
12|Sep-18 |200 |200 |200 |
13|Oct-18 | |50 |50 |
交货时间表(理想输出):
|A |B |C |D |E |
1|Desc|Delivery Date|30-Jan-18|31-Jan-18|01-Feb-18|
2|Jan |31-Jan-18 |350 |0 |0 |
3|Feb |28-Feb-18 |250 |400 |400 |
4|Mar |31-Mar-18 |150 |150 |150 |
5|Apr |30-Apr-18 |100 |100 |100 |
6|Jul |31-Jul-18 |175 |150 |150 |
7|Aug |31-Aug-18 |400 |450 |450 |
我的转化表:
|A |B |C |D |
1 |Desc/Input Date|30-Jan-18|31-Jan-18|01-Feb-18|
2 |Storage |Jan |Feb |Feb |
3 |Reserve |Jan |Feb |Feb |
4 |Jan-18 |Jan |Feb |Feb |
5 |Feb-18 |Feb |Feb |Feb |
6 |Mar-18 |Mar |Mar |Mar |
7 |Apr-18 |Apr |Apr |Apr |
8 |May-18 |Jul |Jul |Jul |
9 |Jun-18 |Jul |Jul |Jul |
10|Jul-18 |Jul |Jul |Jul |
11|Aug-18 |Aug |Aug |Aug |
12|Sep-18 |0 |0 |0 |
13|Oct-18 |0 |0 |0 |
到目前为止,我所做的是创建一个单独的转换表来分配计划。比较输入日期,交货日期和购买月份后,它基本上是VLookUp
。
然后是一个指向上一个单元格的IfError
。但是,如果我使用IfError
来引用先前的单元格,则无法将其用于以后的计划交货。我想知道是否有更好的方法来解决这个问题?
我的转化表公式Range("B2")
:
=IFERROR(IF(B$1>INDEX(DeliverySchedule!$B:$B,MATCH(TEXT($A2,"Mmm"),DeliverySchedule!$A:$A,0)),B3,TEXT($A2,"Mmm")),B3)
我的交货时间表公式Range("B2")
:
=SUMIF(ConversionTable!B:B,$A2,PurchaseSchedule!B:B)