-1

我有以下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

请注意,在 6 月和 7 月,值是 45,因为 5 月的最后一个非零 YTDActual 值是 45。

谢谢

更新:只是澄清一下,第二张桌子放在另一张桌子上,它们不是并排的。

4

4 回答 4

1

如果您的日期从 A2 开始,而 YTD 实际金额从 B2 开始,请尝试复制以下 C2 的公式

=LOOKUP(2,1/(B$2:B2<>0),B$2:B2)

这将为您提供所需的结果

于 2013-07-24T18:54:07.143 回答
1

这会做到:

Col A      Col B        Col C
StartDate  YTDActual    NewValue
1/1/2013   100          =if(B2<>0,B2,C1)
...

然后只需将C列中的公式拖下来

于 2013-07-24T18:55:16.437 回答
0

新数据是否在 YTDActual 旁边的列中?我在这里得到的是它是否需要引用日期或者它可能只是一个 C 列:

=if(B2=0,C1,B2)

如果不是零或它上面的单元格,这将返回 B2,这可以在单元格 C2 中输入,然后向下拖动以覆盖其他单元格。

如果这对上面 B 列旁边的列中的新数据不起作用,那么我认为如果没有 VBA,您可能很难做到这一点。您将遇到的问题是您无法创建循环,因此如果一个值为零,您可以检查另一个值,但这也可能是零,依此类推。

于 2013-07-24T18:57:40.607 回答
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、... 包含日期。

于 2013-07-24T19:27:00.383 回答