以下情况:
工作表1提供了两个单元格中的日期范围:
Beginning____End
1.2013______2.2013
2.2013______3.2013...
表2提供了具体的日期和值
3.1.2013_____500$
5.2.2013_____700$...
我现在要做的是在工作表1的右侧日期范围旁边插入工作表2中的值。请注意,每个日期范围只有一个日期(因此只有一个值)。
1.2013___ 2.2013___500$
2.2013___ 3.2013___700$
通常在这种情况下我会使用Vlookup并匹配日期,但这不起作用,因为我必须将值范围作为lookup_value。
我非常感谢你的帮助。这个问题似乎很容易,但我似乎无法找到解决方案!我试图为我在这里和其他网站上发现的类似问题应用一些解决方案,但我还没有找到解决方案。
谢谢和最诚挚的问候!
答案 0 :(得分:1)
我不确定是否有替代方案,但这就是我提出的方法:
=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
中的日期或之前。在月份跳过的情况下,这一点就是照顾它的。
VLOOKUP(C3,Sheet1!$B$3:$C$11,2)
这会查找相应的日期值。
我更新了您的文件here。
答案 1 :(得分:0)
只要Sheet2上的日期按升序排列,您仍然可以使用VLOOKUP。如果您查看VLOOKUP的帮助,您将看到如果省略range_lookup
参数或TRUE,则该函数将匹配等于搜索值的第一个值或最小值。比搜索值。因此,在您的示例中,如果Sheet1上的单元格B2包含2.2013
,则VLOOKUP(Sheet1!B2, Sheet2!$A$1:$B2)
将返回500,因为3.1.2013
是搜索列中的最后一个小于搜索值的值(Excel处理month.year日期值等于1.month.year)。
如果每个月在Sheet2上有始终值 - 例如它从未从5.2.2013跳到例如7.4.2013 - 那么VLOOKUP本身就应该做你需要的。如果Sheet2上有时缺少月份,则需要限制VLOOKUP函数的搜索范围,以防止(在此示例中)结束日期4.2013
返回5.2.2013
值。您可以使用OFFSET和MATCH函数为VLOOKUP的table_array
构建一个范围,该范围从您要查找的日期范围的开头开始。在MATCH函数中使用match_type
参数1,使其行为方式与VLOOKUP相同。