我正在尝试找到一种方法,从单元格中获取位于当前工作表左侧(托盘下方)的工作表单元格中的数据。
我知道如何通过调用其他工作表
=Sheet1!A1
但现在我需要一些最好的解释
=Sheet[-1]!A1
有什么想法吗?
最佳答案
使用 Tab 键顺序作为计算的基本部分对于 Excel 计算来说是一种复杂且危险的方法。 Excel 提供了许多替代方案,您最好使用它们:
贝利萨留建议的简化版本是:
=INDIRECT(A1 & "!A2")
,其中单元格 A1 具有数据源工作表的名称,A2 具有目标单元格的名称在您的数据源表中。如果您知道感兴趣的工作表的名称(或可以通过某种方式查找),请使用此方法。如果您需要经常执行此操作,您可能希望将数据导出到实际数据库(即 MS Access)中。然后您可以进行标准 SQL 查询并将结果导入到 Excel 文件中。
如果您绝对想走 VBA 路线,那么您必须编写一些代码:
3a.获取事件工作簿的所有名称并将它们存储在数组中。
3b.标识该数组中当前事件工作簿的索引号。从该索引中减去 1 以使工作表位于左侧。
3c.从该工作表中获取单元格值。您还可以对命名范围感到奇怪。在 Excel 2003 中,转到插入->名称->定义,添加新的命名范围,您可以在计算中使用该名称,而不是按行和列引用单元格。
编辑
The whole Idea with this one, is that you have the Sheets arranged, and are able to move them around, and that shall change the calculations. – Gnutt 1 hour ago
拜托,拜托,不要这样做。对于初学者来说,这不是与电子表格交互的标准方法。您的最终用户可能会感到困惑,甚至可能不会要求澄清。
您将想要探索数据验证的想法:
- 使用数据->验证,创建一个下拉菜单,列出工作簿中的所有工作表(如果所有工作表的名称都是静态的,则可以对它们进行硬编码,否则,您将将需要一些 VBA 来拉动它们)。
- 然后用户只需选择他们选择的工作表,indirect() 就会自动更新所有内容。
或者,您也可以查看工具->方案。我不知道有谁使用此功能,但您可能是一个很好的人选。基本上,它可以让您查看使用不同数据集(即“场景”)的计算结果,以便用户可以在它们之间来回切换。
使用上述 2 种方法中的任何一种,您很有可能完全避免使用 VBA,从而避免用户在打开文件时看到烦人的警告消息。
关于excel - 指向 Excel 中相对的其他工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4053772/