首页 > 解决方案 > 使用 vlookup 时自动更改文件名日期的 Excel 公式

问题描述

例子:

=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 中做到这一点?

标签: excelvbadateexcel-formulavlookup

解决方案


假如说:

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")

推荐阅读