引用每天更改的文件 / Excel

Reference a file that changes daily / Excel

在进入 VBA 解决方案之前,我想知道是否可以更新我正在引用的已关闭工作簿的文件名。

公式为,

=SUMIF('L:path\[filename - "&TEXT(WORKDAY(TODAY(),-1),"yyyymmdd")&".xlsx]Sheet'!$BF:$BF,"criteria",'L:path\[filename - "&TEXT(WORKDAY(TODAY(),-1),"yyyymmdd")&".xlsx]Sheet'!$DX:$DX)

澄清一下,文件名的路径看起来像这样,This is the filename - yyyymmdd.xlsb

工作人员说无法更改文件名,因为它是一个字符串。如果是这样的话,有人可以稍微扩展一下吗?

你真的不能。如果你有 "Book1.xls" 和 "Book2.xls",你可以做什么把这个公式放在书 1 中:

=MID(CELL("filename",A1),FIND("",CELL("filename",A1))+1,FIND("]",CELL("filename",A1))-FIND("",CELL("filename",A1))-1)

这将 return Book1 的名称(仅)。然后您可以引用 Book2 中的那个单元格。但是,如果您将 Book1 的名称更改为其他名称,引用将被破坏,您将不得不手动更改引用(从更新 link 管理器中选择文件)。似乎 excel 使用绝对路径(包括文件名)来引用其他工作簿。您需要有一种方法来将对该工作簿的灵活引用存储到 Book2 中。但是唯一的办法就是VBA.

有趣的是,您可以这样做:

  • 在 book2 中创建指向 book1 中单元格的引用。您在 book2 中获得该单元格的值。
  • 关闭所有内容。
  • 只打开 book1,编辑引用的单元格。关闭并保存 book1。
  • Book2,当你打开它的时候,会询问你是否要更新link,即使book1还处于关闭状态,你也可以看到更新后的值。

我的另一个想法是使用 INDIRECT,就像那里所做的一样:using indirect function in Excel

但它不适用于关闭的工作簿,这是您的要求之一。

所以 VBA 是。