我想编写一个公式,用于查找相同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
提前致谢。
答案 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)}
虽然它非常缓慢......