【问题标题】:Excel Dynamic Formula/Reference WorkbookExcel 动态公式/参考工作簿
【发布时间】:2017-01-21 06:16:00
【问题描述】:

我正在尝试在公式中创建动态引用;这意味着可以更改引用的工作簿和后续工作表名称并加载适当的数据。

我知道静态公式引用可以按如下方式完成:

=SUM('C:\Reports\[SOTDJ17.xlsx]Summary'!C10:C25)

但我希望能够更改工作簿名称,它将引用来自该特定工作簿的信息并更改数据。工作簿名称 存储在 B5 中,工作表存储在 B8 中。我以为我可以使用 像这样简单的东西:

=SUM('C:\Reports\[B5]B8'!C10:C25)

但它似乎不起作用。是否存在语法错误或我遗漏的其他内容?

(请注意,我正在尝试引用已关闭的工作簿)

【问题讨论】:

  • 欢迎来到 Stack Overflow!不幸的是,这个问题与编程无关,因此与本网站无关。
  • @Joe C - excel-formula 标记声明“此标记用于 Microsoft Excel 问题,其中问题或答案专门关于 Excel 公式的结构、语法或输出。”我不同意你关于我的问题离题的说法。

标签: excel vba excel-formula


【解决方案1】:

你会想要使用Indirect():

=SUM(INDIRECT("["&B5&"]"&B8&"!$C$10:$C$25"))

请注意,您所指的工作簿必须是打开的。

【讨论】:

  • 该公式适用于打开的工作簿,所以谢谢。虽然它不能完全解决我的问题(我想参考一个封闭的工作簿),但它给了我一个起点,因为我不是一个要求复制粘贴解决方案的人。
  • @JSpeight 好吧,Afaik 你必须用indirect() 打开工作簿。除非您可以使用 VBA,否则我不知道另一种方法可以满足您的要求。 (即使那样你也必须打开工作簿,运行宏,然后关闭它)
  • 是的,这似乎是 direct() 并不是我正在寻找的答案,但是,我正在尝试做的似乎是可能的 - INDEX 和 VBA 宏似乎是我最好的选择,所以到目前为止,但我不是一个普通的 excel 用户,所以我认为这需要一些试验和错误。
  • @JSpeight 这将是一个新问题。但是为了让您开始,在您的工作簿打开的情况下启动宏记录器。然后打开所需的工作簿,返回主 WB 并运行 Sum 公式。复制粘贴为值并关闭第二个 WB。然后停止宏记录器,您将大致了解 VBA 的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 2014-08-25
相关资源
最近更新 更多