概念:使用外部引用来引用其他工作簿中的数据
在工作簿中,您可以引用其他工作簿中的单元格或数据范围。我们将此类引用称为“外部引用”或“跨工作簿引用”。引用同一工作簿中的其他工作表时使用的语法与此相似,因此我们将在本主题中一并进行介绍。您可以创建独立引用(仅使用等号和引用内容),也可以将引用作为公式中的参数。
引用(引入)其他工作簿数据的工作簿称为使用者工作簿。数据被其他工作簿引用的工作簿称为生产者工作簿。一个工作簿可以同时作为使用者和生产者工作簿。

创建外部引用
要从使用者工作簿添加对生产者工作簿的引用,您必须具有使用者工作簿的“可编辑”权限,以及生产者工作簿的“可查看”权限或更高权限。
在有人创建或更改包含外部引用的公式时,Worksheets 会记住执行操作的用户。当公式运行时,Worksheets 会验证用户是否有权访问外部引用的工作簿。
从生产者工作簿 中
,您可以复制完整的引用,然后将其粘贴到使用者工作簿中。- 选择要引用的数据,单击右键,然后选择“复制为外部引用”。
- 打开使用者工作簿。在需要添加引用的单元格中,键入等号 (=),然后按 Ctrl + V (Windows) 或 Command + V (Mac) 来粘贴引用。
或者,您也可以导航到 ,并在使用者工作簿中手动添加外部引用的其余部分,从而获取生产者工作簿的 Workday 编号。
在使用者工作簿“”中
,您可以复制生产者工作簿的 Workday 编号,然后手动添加定义的名称或工作表名称以及单元格/范围引用。- 在要放置引用的单元格中,选择 以查看您有权访问的所有工作簿。
- 导航到生产者工作簿,然后单击“复制 Workday 编号”。
- 在使用者工作簿中,键入一个等号 (=),然后按 Ctrl + V (Windows) 或 Command + V (Mac) 来粘贴 Workday 编号。然后,键入引用的其余部分,这可能是定义的名称或工作表名称和单元格/范围引用。
更新外部引用
使用者工作簿的工作簿工具栏上显示灰色的
“外部引用”
图标。如果生产者工作簿中的数据发生变更,该图标将变为绿色,您可以单击该图标以更新使用者工作簿中的数据。具有任何工作簿权限级别的用户都可以访问 “外部引用”
图标。在 进行的更新与 全部重新计算
相同。最多可能会有 2 分钟的延迟,一旦生产者工作簿中的数据发生变更,使用者工作簿的 “外部引用”
图标就会变绿色。当生产者工作簿的数据发生变更时,您可以选择在使用者工作簿打开时自动更新外部引用,也可以打开使用者工作簿并单击
“外部引用”
图标来手动更新外部引用。单击 “文件”
>“设置”
,选中或取消选中 “每次打开外部工作簿时都更新其中的数据”
复选框。此外,您可以排定动态数据刷新时间表,以提示重新计算使用者工作簿。您可以设置已排定的刷新时间表,以自动执行重新计算,即使使用者工作簿不包含动态数据也是如此。
例如,如果您有 3 个联接在一起的工作簿(“生产者”>“使用者”/“生产者”>“使用者”),则可以通过排定数据刷新时间表,自动更新每个工作簿。此外,错开已排定的刷新时间表可确保在重新计算下一个工作簿中的数据之前,一个工作簿中的数据是最新的。
此方法可自动执行工作簿之间的数据流,从而无需手动更新。
- 排定生产者/使用者工作簿的刷新时间表。在生产者/使用者工作簿中,单击“数据”>“排定动态数据刷新时间表”,然后设置刷新时间,例如中午 12:00。这将更新从生产者工作簿中提取的数据。
- 排定使用者工作簿的刷新时间表。在使用者工作簿中,将刷新时间排定在生产者/使用者刷新之后,例如中午 12:15。这可确保使用者工作簿始终显示重新计算的最新数据。
“排定动态数据刷新时间表”
选项只能由工作簿所有者配置,并且排定的刷新每天只能运行一次。语法指导标准
对于外部引用:
- 在方括号内输入工作簿的 Workday 编号,然后输入工作表名称以及单元格、单元格范围或定义的名称。请勿包含生产者工作簿的文件夹/路径信息。
对于跨工作表引用或外部引用:
- 首先在单元格中输入等号 (=)。
- 如果工作表名称具有以下任一属性,请用单引号 (') 将名称括起来:
- 工作表名称不是以字母或下划线开头。
- 工作表名称中的任何后续字符都不是字母、数字、句点或下划线。
- 跨工作表引用示例:
- =工作表1!A1:A4
- ='所有员工'!A1:A4
- ='所有员工'!DataArea1,其中 DataArea1 是定义的名称
下表展示了一些外部引用示例。为方便阅读,此处缩短了 Workday 编号。
=[9f9a1]January!A1 | 从 Workday 编号为 9f9a1 的工作簿中,获取“1月”工作表 A1 单元格中的数据。 |
=SUM([9f9a1]January!A1:B6) | 显示以下单元格的总和:Workday 编号为 9f9a1 的工作簿内“1月”工作表 A1:B6 范围内的单元格。 |
=[9f9a1]DataArea1 | 从 Workday 编号为 9f9a1、定义的名称为 DataArea1 的工作簿中获取数据。 |
=SUM([9f9a1]Regions!A1:B6) | 显示以下单元格的总和:Workday 编号为 9f9a1 的工作簿内“区域”工作表 A1:B6 范围内的单元格。 |
=SELECT("SELECT * FROM ?",ARRAYAREA([9f9a1]'Data Sheet'!A1)) | 使用 SELECT 函数从 9f9a1 工作簿的“数据表”工作表中获取数组数据。 |
外部引用的注意事项
使用外部引用时,请牢记以下提示:
- 如果生产者工作簿中的数据发生变更:
- 如果您单击绿色的“外部引用”图标来更新使用者工作簿,系统将执行与全部重新计算相同的操作。
- 若您更改了数据在生产者工作簿中的位置(例如因删除工作表或在范围中插入列而更改了位置),Worksheets 不会更新使用者工作簿中的引用。
- 如果您无法访问某个生产者工作簿,或者某个生产者工作簿已被删除,您会在依赖外部引用数据的工作簿单元格中看到 #REF! 错误。
- 如果由于创建者的用户帐户被停用,或者创建者用户不再拥有生产者工作簿和使用者工作簿的权限,而导致工作簿中的外部引用失效,Worksheets 会重新指定工作簿中损坏的外部引用。只要拥有使用者工作簿的编辑权限、所有者权限以及生产者工作簿的查看权限或更高权限的用户单击“外部引用”图标,Worksheets 就会尝试修复外部引用。如果 Worksheets 无法更新引用,系统会显示 #REF 错误,此时您需要手动更新引用。
- 如果您的外部引用包含结构化引用(动态数据表名称/列名称),并且您更改了表名称或列名称,Worksheets 不会自动更新使用者工作簿;您需要手动更新引用。
- 生产者工作簿引用中的格式设置将应用于使用者工作簿,但如果后者的单元格已设置格式,则不会应用。如果您后续更改了所引用的生产者工作簿单元格中的格式设置,新格式设置不会应用于使用者工作簿。(同一工作簿中的引用也是如此。)
- 如果您将光标悬停在公式栏中外部引用内的 Workday 编号上,Worksheets 会显示生产者工作簿的名称。
- 您不能在使用者工作簿中添加对生产者工作簿图表的引用;此操作会引发错误。
- 如果您是工作簿所有者,则可以使用范围保护来阻止拥有“可编辑”权限的用户更改生产者工作簿中的内容。但是,即便在使用者工作簿中使用范围保护,也不能阻止更新从生产者工作簿传播到使用者工作簿。
- 在特定租户中,一个生产者工作簿最多可供 10,000 个使用者工作簿引用。一个使用者工作簿最多可引用 25 个生产者工作簿的数据。
- 在生产者工作簿数据发生变更时,NOTIFYIF 和 NOTIFYIFS 函数不会自动更新;您需要手动更新引用或设置已排定时间表的动态数据刷新。(工作簿不需要包含动态数据;已排定时间表的刷新操作会执行重新计算操作,从而更新使用者工作簿数据。)