获取对存储在另一个 Excel 工作簿中的数据的只读访问权限的最佳方法是什么?我知道有两种可能性,每种都有其优缺点。
选项 1)直接引用数据
例如:=[test1.xls]Sheet1!$A$1
- 优点:工作簿打开时更新数据
- 优点:即使引用的工作簿已关闭,仍可工作
- 缺点:操作无法由数据驱动
- 优点:适用于所有电子表格,没有安全限制
选项 2)使用 INDIRECT 和 ADDRESS 引用数据
例如: =INDIRECT(ADDRESS(B7,B6, 1, TRUE, B4))
其中 B7 包含行索引,B6 包含列索引,B4 包含工作簿/工作表名称
- 优点:数据的位置可以由数据驱动
- 缺点:当参考书关闭时不起作用
- 缺点:自动加载参考书的解决方法在默认宏安全级别下不起作用
答案1
答案2
如果您担心该技术是否由数据驱动,是因为您担心当其他工作簿中的数据发生变化时引用会过时,那么您可以使用命名范围来避免该问题。
要创建命名范围:在包含数据的工作簿中,选择包含数据的单元格,单击名称框(单元格行和列出现的位置),然后输入名称。
引用范围:要从另一张工作表引用命名范围:
'[MyData.xls]Sheet1'!MyNamedRange
如果您需要从表中获取特定值,则可以使用各种查找函数(例如 vlookup、hlookup、index)来选择特定值。
例如,如果我在工作簿“Sales.xls”中的“Grocery”工作表上有下表,并且我为整个表定义了一个命名范围“tableSales”,
商品 销量 香蕉 343 葡萄 123 鸡蛋 756
然后我可以使用以下内容在另一个工作簿中查找“鸡蛋”销售情况:
=VLOOKUP("鸡蛋",'[Sales.xls]杂货店'!tableSales,2,false)
(vlookup 的第一个参数是查找值,第二个参数是表格的范围,第三个参数指定要检索的列,如果第四个参数设置为 true,它将尝试找到近似匹配)