1

以下情况:

工作表 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。

我会非常感谢你的帮助。这个问题似乎很简单,但我似乎无法找到解决方案!我尝试对在这里和其他网站上发现的类似问题应用一些解决方案,但我还没有找到解决方案。

谢谢和最好的问候!

4

2 回答 2

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)这将查找日期的相应值。

在这里更新了你的文件。

于 2013-07-16T08:06:33.783 回答
0

只要您在 Sheet2 上的日期按升序排列,您仍然可以使用 VLOOKUP。如果您查看 VLOOKUP 的帮助,您会看到如果range_lookup参数被省略或为 TRUE,则该函数将匹配等于搜索值的第一个值,或小于搜索值的最大值。因此,在您的示例中,如果 Sheet1 上的单元格 B2 包含2.2013thenVLOOKUP(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 相同。

于 2013-07-15T12:41:37.737 回答