
相对跨工作表引用,跨工作簿引用显得更为复杂,数据源工作簿是否处于打开状态、通过何种方式打开,都会对引用产生影响。
首先在D盘根目录下新建两个工作簿文件,分别命名为“表1”和“表2”,在表1中Sheet1工作表的A1单元格内输入1,B1单元格内输入2,再打开表2,在表2中Sheet1工作表的A1单元格内输入“=SUM()”后,将光标移动到括号内,点选表1窗口,使用鼠标点选A1:B1区域后按下回车键。此时公式被填充为“=SUM([表1.xls] Sheet1!$A$1:$B$1)”,并得到结果3,如图1-1所示。

图1-1 在进行上一步操作时,可能会遇到以下问题:光标已经处于SUM函数的括号中,但在点选表1并选取A1:B1单元格后,并没有形成如图2-18所示的跨工作表单元格引用。这种情况是由于Excel文档打开方式不正确所导致的。在正常情况下,多个Excel文档都会在同一个Excel程序进程中打开。如果在打开表1后,再次从“开始”菜单中打开Excel主程序,在新的Excel程序窗口内打开表2,就会使两个工作簿文件运行于不同的Excel程序进程中,而不同的Excel进程之间无法互相通信,致使引用失败。可以通过同时按下【Ctrl】、【Alt】、【Del】3键打开任务管理器,在任务管理器的“进程”选项卡中能看到系统中运行着两个Excel程序进程,如图1-2所示。解决的方法也很简单,关闭表2,在表1的Excel窗口中执行“文件”→“打开”命令,在“打开”窗口中选择表2并打开,此时,两个Excel工作簿文件都将运行于同一个Excel程序进程中。

图1-2 在表2中引用表1数据成功后,保存并关闭表1,此时表2中的跨工作簿引用被自动修改为含有路径信息的引用样式“=SUM(‘D:\[表1.xls]Sheet1’!$A$1:$B$1)”。保存并关闭表2。再次打开表1,将表1中Sheet1表内B1单元格数据修改为5后,保存并关闭该表。再次打开表2,将弹出“外部数据源链接”对话框,如图1-3所示。如果单击【更新】按钮,公式将重新读取表1数据并得到新的结果6。

图1-3 注意:在本节中,使用了SUM函数构建跨工作簿的引用,并且能在数据源工作簿关闭的情况下正确更新数据,但Excel中只有少数函数支持不打开数据源工作簿引用数据,绝大多数函数都需要将数据源工作簿打开才能正确引用。所以对于绝大多数函数而言,如果数据源工作簿没有打开,而又单击了“更新”按钮,会导致公式出错。