查找相同ID的上一个日期

时间:2015-07-06 13:05:35

标签: excel

我想编写一个公式,用于查找相同ID字段的当前日期之前的最新日期的值。

例如,我想使用公式派生PreVal列。这可能在Excel中吗?

 DATE       ID    Val   PreVal
2015-01-01   A    10     -
2015-01-02   B    15     -
2015-01-05   A    20    10
2015-01-06   A    15    20
2015-01-25   B    90    15

提前致谢。

2 个答案:

答案 0 :(得分:0)

假设您的日期列已排序,这应该可以正常工作

= LOOKUP(2,1 /($ B $ 2:B3 = B4),$ C $ 2:C3)

你想要$ B $ 2:B3是从开始到你所在的一行的id列,B4是你所在行的ID和$ C $ 2:C3是与$ B $ 2相同的范围:B3但是对于Val列。

编辑:

对于非排序的,这个应该有效:

= LOOKUP(2,1 /($ A $ 2:$ A $ 6< A4)/($ B $ 2:$ B $ 6 = B4),$ C $ 2:$ C $ 6)

EDIT2:

第二个想法,它不会工作,我的坏。

EDIT3:

最终找到了有效的东西。您必须使用数组公式(在输入公式后按组合键ctrl + shift + enter)

= VLOOKUP(MAX(IF($ B $ 2:$ B $ 6 = IF(B2 =" A"" B"" A&#34), "",IF($ A $ 2:$ A $ 6个= A2"",$ A $ 2:$ A $ 6))),$ A $ 2:$ C $ 6 ,3,0)

答案 1 :(得分:0)

Phew ....找到你的答案......艰难的。

你对数组公式没问题吗? (这些比普通公式稍微复杂一点,只有在输入公式后按 ctrl + shift + enter 才会有效)

您可以使用此公式(请参阅下面的评论):

=VLOOKUP(MAX(IF((B:B=B2) * (A:A<A2);A:A;0));IF((B:B=B2) * (A:A<A2);A:C;"-");3;FALSE)
  • 不要忘记按ctrl+shift+enter将其转换为数组公式,它将如下所示:

    {=VLOOKUP(MAX(IF((B:B=B2) * (A:A<A2);A:A;0));IF((B:B=B2) * (A:A<A2);A:C;"-");3;FALSE)}
    

虽然它非常缓慢......