【问题标题】:Excel Reference External SheetExcel 参考外部工作表
【发布时间】:2014-11-13 16:10:41
【问题描述】:

给各位大师的 excel 问题。我试过搜索高低并没有想出一个有效的解决方案。

我正在尝试创建一个在外部工作表中查找值的公式。我正在使用 SUMPRODUCT 公式,并且效果很好。公式如下:

=SUMPRODUCT(--('File\Path\[file.xlsx]SheetName!$D$1:$D$1000=$B3), --('File\Path\[file.xlsx]SheetName'!$O$1:$O$1000=$A3), 'File\Path\[file.xlsx]SheetName'!$Q$1:$Q$1000)

然而,我遇到的问题是源文件每天都会更新。尽管工作簿名称保持不变,但工作表名称会发生​​变化。每次更新时,都会为源工作表名称分配一个随机字符串。这样SheetName 就变成了SheetName ase341

有没有办法让公式读取外部工作​​表编号而不是名称?无论工作表名称如何,我都希望公式更新。如果无法读取工作表位置,是否可以通过外部工作簿中的公式更改工作表名称?



使用示例

我有一个工作簿(分析),它从另一个工作簿(来源)中提取数据。源每天都会用新数据更新。通过从 Internet 下载报告并保存旧的源文件来更新 Source 中的数据。因此,文件名保持不变,但文件内的任何内容始终不同(包括工作表名称)。源中始终只有一张具有相同列数的工作表,始终位于相同的位置。

【问题讨论】:

标签: vba excel


【解决方案1】:

有一种非常巧妙的方法可以引用外部工作簿中的单元格块,其中工作表名称甚至块地址可能会有所不同。假设我们有:

=SUM('C:\Users\James\Desktop\[Book1.xlsx]Sheet1'!$B$2:$B$9)

但是工作表名称可能会有所不同。首先为Book1中的块分配一个定义的名称(比如XXX

那么我们可以使用:

=SUM('C:\Users\James\Desktop\Book1.xlsx'!XXX)

不管sheetname是否改变,Defined Name都会随之改变!

【讨论】:

  • 谢谢!但是,我遇到的问题是更新内容时会在旧文件上保存一个新文件。因此,任何预定义的 anything 都将在更新时被删除。这就是为什么我想从外部提取位置,这样使用此工作簿的人就不必每天手动打开源工作表并重命名它。
  • @LahiruTM:如果是全新的同名文件,你怎么(人类)知道哪张表有正确的数据???
  • @GarysStudent - 如果这令人困惑,我们深表歉意。我有一个工作簿(分析),它从另一个工作簿(源)中提取数据。源每天都会用新数据更新。通过从 Internet 下载报告并保存旧的源文件来更新数据。因此,文件名保持不变,但文件内的任何内容始终不同(包括工作表名称)。但是,源中始终只有一张具有相同列数的工作表,始终位于相同的位置。
  • @LahiruTM:你已经把问题说得很清楚了!我能想到的唯一解决方案是使用 VBA 宏来: 1 打开源工作簿 2 检索工作表名称 3 修改分析工作簿中的公式……你熟悉宏吗??
  • @GarysStudent - 我刚刚开始了解它们。我会试试看。
【解决方案2】:

使用 VBA 可以最有效地解决您的问题,但如果您刚刚开始,这可能不是最佳途径。

不过,您可以仅使用公式获取工作表名或文件名:

http://www.ozgrid.com/VBA/return-sheet-name.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多