【问题标题】:Excel formula that automatically changes the date for a filename when using a vlookup使用 vlookup 时自动更改文件名日期的 Excel 公式
【发布时间】:2018-09-14 21:15:13
【问题描述】:

例子:

=VLOOKUP(B2,'[Approved Contractors 08302018.xlsx]Contractor with key'!$B$2:$C$99999,2,0)

名为“Approved Contractors 08302018.xlsx”的电子表格的文件名将在下周更改为“Approved Contractors 09062018.xlsx”。电子表格中的选项卡名称称为“Contractor with key”。

目前,我必须进入公式,更新文件名后面的日期,然后将其粘贴到excel中,然后将其复制到所有单元格中。如何让它自动更新。我在想=today()-8,但我不确定如何在文件名的 vlookup 中做到这一点?

【问题讨论】:

  • 这些有多少?您想对所有这些都使用 volatile 工作表函数吗?外部工作簿是否始终打开?顺序是否会因假期或其他原因而改变?
  • 日期总是今天的日期?目前尚不清楚此日期更改是如何发生的。

标签: excel vba date excel-formula vlookup


【解决方案1】:

假设:

1.您只需更改文件名中的日期(例如,仅 08302018 部分)

2.此日期的格式始终为 mmddyyyy

3.这个日期总是=TODAY()-8

4.所有其他细节保持不变(例如工作表名称、源文件与目标文件位于同一文件夹中、C 列下的返回值等...)

然后您可以使用INDIRECT 函数在公式中自动更改该日期:

=VLOOKUP(B2,INDIRECT("'[Approved Contractors "&TEXT(TODAY()-8,"mmddyyyy")&".xlsx]Contractor with key'!$B$2:$C$99999"),2,0)

但是,我注意到您的示例与第三个假设背道而驰,您不想将其引用到 TODAY()-8,而是要将其引用到当周的 THURSDAY 日期。在这种情况下,您只需更改上述公式中的参考日期即可。请考虑以下公式:

=VLOOKUP(B2,INDIRECT("'[Approved Contractors "&TEXT(TODAY()-WEEKDAY(TODAY())+5,"mmddyyyy")&".xlsx]Contractor with key'!$B$2:$C$99999"),2,0)

澄清一下,它的作用是将公式中参考文件名中的日期更改为本周的THURSDAY 日期。因此,当您今天(2018 年 9 月 15 日)在文件中运行它时,参考文件名应该是 “Approved Contractors 09132018.xlsx”

如果这返回错误,则可能意味着假定的参考文件命名不正确。在这种情况下,使用IFERROR 函数会提醒我们检查参考文件名。当确实发生错误时,以下公式将显示“请检查参考文件名”

=IFERROR(VLOOKUP(B2,INDIRECT("'[Approved Contractors "&TEXT(TODAY()-WEEKDAY(TODAY())+5,"mmddyyyy")&".xlsx]Contractor with key'!$B$2:$C$99999"),2,0),"Please check reference filename")

【讨论】:

  • 我会在周五再次检查并留下更详细的回复。我做了一个快速测试,它似乎工作。谢谢!
  • 所以效果最好的是您提供的第一个 vlookup 公式。 =VLOOKUP(B2,INDIRECT("'[Approved Contractors "&TEXT(TODAY()-8,"mmddyyyy")&".xlsx]Contractor with key'!$B$2:$C$99999"),2,0) 如果有一个星期五由于某种原因我们无法运行它,我可以在那个时候弄乱它,但现在这是完美的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
  • 1970-01-01
相关资源
最近更新 更多