vlookup:lookup_value作为date范围

以下情况:

工作表1提供了两个单元格中的date范围:

Beginning____End 1.2013______2.2013 2.2013______3.2013... 

工作表2提供了具体的date和值

 3.1.2013_____500$ 5.2.2013_____700$... 

我现在要做的是在Sheet 1的正确date范围旁插入Sheet 2中的Values。请注意,每个date范围只有一个date(也就是一个值)。

 1.2013___ 2.2013___500$ 2.2013___ 3.2013___700$ 

通常在这种情况下,我会使用Vlookup并匹配date,但这是行不通的,因为我将不得不把值范围作为lookup_value。

我会非常感谢你的帮助。 这个问题似乎很容易,但我似乎无法找出解决scheme! 我试图应用一些解决scheme,我在这里和其他网站上find类似的问题,但我还没有find一个解决scheme。

谢谢,最好的问候!

我不确定是否有其他select,但这是我想出来的:

 =IF(VLOOKUP(C3,Sheet1!$B$3:$C$11,1)>=B3,VLOOKUP(C3,Sheet1!$B$3:$C$11,2),0) 

首先需要注意的是,你有一个“浮动”或者是未扩展的范围,这会使你的LOOKUP()工作起来,但是最终会导致很多错误的值。

对于公式,这里有一点描述:

VLOOKUP(C4,Sheet1!$B$3:$C$11,1)>=B4这将检查End of Period是否等于或等于我们正在查找的Sheet1的date。 在月份跳过的情况下,这一点是照顾它的。

VLOOKUP(C3,Sheet1!$B$3:$C$11,2)查找相应的date值。

我在这里更新你的文件。

只要您在Sheet2上的date按升序排列,您仍然可以使用VLOOKUP。 如果查看VLOOKUP的帮助,将会看到如果省略range_lookup参数或TRUE,则函数将匹配等于search值的第一个值或小于search值的最大值 。 因此,在您的示例中,如果Sheet1上的单元格B2包含2.2013VLOOKUP(Sheet1!B2, Sheet2!$A$1:$B2)将返回500,因为3.1.2013是search列中小于search值的最后一个值(Excel将month.yeardate值等于1.month.year)。

如果每个月在Sheet2上总是有一个值 – 也就是说,它从不会从5.2.2013跳到7.4.2013,那么VLOOKUP本身就应该做你所需要的。 如果在Sheet2上有时会丢失几个月份,则需要限制VLOOKUP函数的search范围,以防止(在此示例中) 4.2013结束date返回5.2.2013值。 您可以使用OFFSET和MATCH函数为VLOOKUP的table_array构build一个范围,该范围从您要查找的date范围的开始处开始。 在MATCH函数中使用1的match_type参数,使其与VLOOKUP的行为相同。