平淡
在Excel 2003中最大的列数是256(即IV列,2的8次方),而在2007及以后的版本中最大的列数是16384(即XFD列,2的14次方),所以我们只要在自己所使用版本的任意单元格中输入超过列数限制的公式,在保存时就会产生兼容性问题,而在检查出兼容性问题后Excel就会在当前工作簿的工作表里建立所有工作表的链接,把该链接作为目录即可。
这里以Excel 2019操作为例。打开需要建立目录的工作簿,用鼠标右键点击某个工作表(如10月31日)并选择“选定全部工作表”,接着在A 2单元格中输入公式“=XFD1”(XFD1大于XFD列),这样在每个工作表的A2单元格中都会自动添加该公式(图1)。
继续切换到“10月31日”工作表,然后点击“文件→信息→检查工作簿→检查问题→检查兼容性”,在弹出的窗口中会提示遇到兼容性问题,点击“复制到新表”,并将新表的名称改为“目录”。接着在“目录”工作表中复制E9:E39区域的内容到H1:H31区域(图2),然后按下“Ctrl+F”组合键启动“查找和替换”功能,将H列单元格中的“'!A 2”替换为空,并将其他的无关内容删除,之后将其复制到当前工作表的B列备用。继续右击“目录”工作表并选择“选定全部工作表”,接着在A1单元格中输入公式“=HYPERLINK("#目录!A1","返回")”,同上也会在每个工作表的A1单元格中自动添加该公式(图3)。
完成上述操作后,只要在“目录”工作表中点击B 列里的文件名称,即可跳转到对应的工作表(图4)。同时点击任意打开工作表A1单元格中的“返回”,又会重新跳转回“目录”工作表。
上述方法操作简单,但是步骤比较多,而通过函数则能快速生成目录,更适合有规律、有计划的多工作表文件。打开工作簿后新建一个名为“目录”的工作表,点击“公式→定义名称”,在弹出的对话框中,“名称”处输入“ 提取表名”,“引用位置”处输入“=GET.WORKBOOK(1)”(表示使用宏表数依次提取工作表的名称),然后点击“确定”(图5)。
在A2单元格中输入公式“=INDEX(提取表名,ROW(A1))”(表示先使用ROW函数提取行号,然后将其作为INDEX函数引用的行号,引用区域为宏表函数提取的表名),然后下拉填充公式,即可提取所有的表名到A列。继续在B2单元格中输入“10月1日”,接着按下“Ctrl +E”组合键提取不带工作簿名称的表名,在C2单元格中输入公式“=HYPERLINK("#"&A2&"!C2",B2)”,下拉公式后就可以生成所有工作表的链接。同上,在其他日期的工作表中再添加一个返回“目录”工作表的链接即可(图6)。
公式解释:在HYPERLINK函数中,"#"&A2&"!C2"表示链接地址,在A2单元格中显示的是“[目录.xlsm]10月1日”,通过和“!C2”连接后链接到“10月1日”这个工作表,而链接显示的名称则是B2单元格中的内容。
如果经常增加或者删除工作表,那么利用VBA腳本生成自动更新目录是最方便的。我们需要先访问“http://dwz.date/cgzc”链接(提取码:c79t)下载所需的代码文件,接着在Excel中按“Alt+F11”快捷键打开代码编辑窗口,点击左侧窗格的“ThisWorkbook”,将下载到的代码粘贴到右侧的窗格中,然后按下F5键运行(图7)。
之后它就会新建一个名为“目录”的新工作表,表中的内容就是生成的目录,并且在每个工作表的K1单元格中会自动添加一个“返回目录”的跳转链接。这样以后当我们在工作簿中增加或者删除工作表后,只要重新运行上述代码即可自动同步目录内容(图8)。