我有以下excel表:
StartDate YTDActual
1/1/2013 100
2/1/2013 200
3/1/2013 99
4/1/2013 33
5/1/2013 45
6/1/2013 0
7/1/2013 0
是否存在一个公式,对于每个StartDate,返回YTDActual中的关联值,如果它不同于0,否则它将返回前一行中不同于0的最后一个YTDActual值。
因此,基本上该公式将在NewValue列中生成以下值:
StartDate NewValue
1/1/2013 100
2/1/2013 200
3/1/2013 99
4/1/2013 33
5/1/2013 45
6/1/2013 45
7/1/2013 45
请注意,在Jun& 7月值为45,因为May的最后一个非零YTDActual值为45。
由于
更新:只是澄清一下,第二张表进入另一张表,它们不是并排的。
答案 0 :(得分:1)
如果您的日期从A2开始,而YTD实际金额从B2开始,请尝试将此公式复制下来
=LOOKUP(2,1/(B$2:B2<>0),B$2:B2)
将为您提供所需的结果
答案 1 :(得分:1)
这样就可以了:
Col A Col B Col C
StartDate YTDActual NewValue
1/1/2013 100 =if(B2<>0,B2,C1)
...
然后只需向下拖动C列中的公式
答案 2 :(得分:0)
新数据是否在YTDActual旁边的列中?我在这里得到的是它需要引用日期还是只能是C列:
=if(B2=0,C1,B2)
如果不是零,则返回B2,否则返回其上方的单元格,可以在单元格C2中输入,然后向下拖动以覆盖其他单元格。
如果这不能使上面B列旁边的列中有新数据,那么我认为如果没有VBA,你可能很难做到这一点。您将遇到的问题是您无法创建循环,因此如果值为零,您可以检查另一个值,但这也可能为零,依此类推。
答案 3 :(得分:0)
我最终将此公式用于NewValue列:
=IF(INDEX(Availability[YTDActual], MATCH(B2, Availability[StartDate], 0)) <>0, INDEX(Availability[YTDActual], MATCH(B32, Availability[StartDate], 0)), INDEX(Availability[YTDActual],MATCH(0,Availability[YTDActual],0)-1))
其中,Availability是excel表的名称,YTDActual是列的名称,B2,B3,...包含日期。