有没有办法使查找始终返回列中第一次遇到的匹配?

我有这样的用户保留数据:

signup_date days retention 2/24/13 0 1 2/23/13 0 1 2/23/13 1 0.4855 2/22/13 0 1 2/22/13 1 0.4727 2/22/13 2 0.3647 2/21/13 0 1 2/21/13 1 0.5135 2/21/13 2 0.3879 2/21/13 3 0.3463 2/20/13 0 1 2/20/13 1 0.5402 2/20/13 2 0.4166 2/20/13 3 0.3615 2/20/13 4 0.3203 2/19/13 0 1 2/19/13 1 0.5317 2/19/13 2 0.4348 2/19/13 3 0.366 2/19/13 4 0.3077 

第二列(“天”)表示自注册date起已过去的日子,保留时间以当天和signup_date为准(因为保留时间可能会更改)。 我需要做出预测,不幸的是对于我来说(因为我更愿意以编程的方式来做这件事),我的老板希望他们在Excel中。 所以我试图使用Lookup()函数来查找保留列中的最新值,该值与某个注册date过去的“天数”相匹配。

无论如何,这就是问题的前奏,如果我input这个公式,现在就是这个问题的前奏:

 =lookup(1,B:B,C:C) 

其中B:B是“天”,C:C是保留,但不一定会返回数据集中的第一个(即最近的)保留值。 例如,在这种情况下,我需要单元格为0.4855,但公式可能会给我0.4727(这是第二个“天= 1”行)。 有没有什么办法来configuration它来做到这一点,或者是否有另一个function,将做我所需要的?

而不是使用LOOKUP ,使用VLOOKUP函数 – 它有另一个参数,指定数据不是按顺序:

 = VLOOKUP(1,$ B:$ C,2,0)

这将返回范围B:B第二列中的条目,其中在范围的第一列中find“1”。 不要忘记最后的0 ,因为这告诉Excel要逐行search(与二进制search相比, LOOKUP或省略参数)。

替代方法: VLOOKUP是简单的公式和默认情况。 更好的是,更灵活的方法是使用INDEX/MATCH

 = INDEX($ C:$ C,MATCH(1,$ B:$ B,0))

这将完全相同,只是你有更多的灵活性,不需要包含“查找数据的第二列”…

HTH!