【问题标题】:VLOOKUP date in date range日期范围内的 VLOOKUP 日期
【发布时间】:2013-03-11 14:49:30
【问题描述】:

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

我想在列表中查找一个值和一个日期,如果日期匹配或在原始日期的 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),"no")))

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

Excel 中是否有可以执行此类操作的函数?

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

【问题讨论】:

  • ...您的数据是按日期的升序/降序排列还是“随机”

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


【解决方案1】:

您可以使用这样的 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 中找到 last 日期,该日期介于 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

确认

【讨论】:

  • 谢谢巴里!那效果很好。我用不同的日期和变量进行了测试,结果很成功。现在是时候剖析它以了解它是如何工作的:)
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多