VLOOKUP日期范围

时间:2013-03-21 21:34:07

标签: excel if-statement indexing excel-2010 vlookup

有没有更简单的方法来完成这项任务?

我想在列表中查找值和日期,如果匹配或在原始日期的5天内返回日期。

到目前为止,我能够做到这一点的唯一方法是创建一个辅助键(A1)并在辅助键列表(F:F)中查找辅助键,并添加一个IFERROR来查看它再次增加1,依此类推。

示例:

    A           B           C           D
1   table1_ky   table1_id   table1_dt   vlookup
2   99941275    999         1/1/2013    1/3/2013


    G           H           I
1   table2_ky   table2_id   table2_dt
2   99941277    999         1/3/2013

D2中的公式:

  

= IFERROR(VLOOKUP(TEXT(A2,0),F:H,3,0),IFERROR(VLOOKUP(TEXT(A2 + 1,0),F:H,3,0),IFERROR(VLOOKUP( TEXT(A2 + 2,0),F:H,3,0), “否”)))

我希望能够设置“+1”变量的数量,这样我就可以将日期范围更改为5,10,30等,而不必使用多达30个IFERROR语句。

Excel中是否有可以执行此类操作的功能?

如果可能,我想避免使用VBA。

1 个答案:

答案 0 :(得分:3)

您可以使用像这样的LOOKUP公式

=IFERROR(LOOKUP(2,1/(G$2:G$100=B2)/(H$2:H$100>=C2)/(H$2:H$100<=C2+5),H$2:H$100),"no")

这将在H2中找到最后日期:H100在C2和C2 + 5之间以及列G值也匹配 - 不需要任何“连接”辅助列,你可以将5调整为您想要的任何值。

“最后”我的意思是位置 - 如果你想要多个匹配的情况下最早的日期(这是你当前的公式),那么切换到这样的“数组公式”:

=IFERROR(SMALL(IF((G$2:G$100=B2)*(H$2:H$100>=C2)*(H$2:H$100<=C2+5),H$2:H$100),1),"no")

使用 CTRL + SHIFT + ENTER确认