当要给同一个工作簿里多个工作表建立超链接时,我们遇到的第一个问题是怎么把这些工作表名称汇总在同一个工作表里。运用宏表函数GET.WORKBOOK能很好地解决这个问题,以下是此函数的用法。
一、宏表函数GET.WORKBOOK
Excel中可以运用宏表函数GET.WORKBOOK来获取工作簿的相关信息。
工作簿的文件保存类型: Microsoft Excel 启用宏的工作表 (.xlsm)(这样才能确保再次启动工作簿时该函数能正常使用)
1、基本语法
函数语法:GET.WORKBOOK(type_num, [name_text])
type_num:第一参数必填,用特定数字指定要获取的信息类型。(数字:1、3、4、38)
name_text:第二参数可选,用来指定目标工作簿名称,省略则默认为当前活动工作簿。
2、第一参数中不同数字代表的含义
GET.WORKBOOK(1):第一参数是数字1时,代表要返回工作簿中所有的工作表名称,以水平数组呈现。格式[工作簿名称.xlsx]工作表名称。
GET.WORKBOOK(3):返回工作簿中当前选中的工作表名称(可多选工作组)。
GET.WORKBOOK(4):返回工作簿中工作表的数量。
GET.WORKBOOK(38):返回活动工作表的名称。(相当于仅提取当前工作表名称)
二、调用GET.WORKBOOK
宏表函数并不能直接在Excel工作簿中使用,需要通过【公式】选项卡中的【名称管理器】来调用。
1、名称管理器
名称管理器:创建、编辑、删除和查找工作簿中使用的所有名称。可以在公式中使用这些名称,以替代单元格引用。例如:=SUM(MySales)可]替代=SUM(C20:C30)。
打开路径:【公式】-【名称管理器】或快捷键:Ctrl+F3
2、新建名称
操作步骤:在公式选项卡下找到定义名称,打开定义名称信息框,新建名称。在“名称”框里输入自定义的名称,在“引用位置”框输入完整的宏表函数。我们需要提取的是工作簿里的工作表名称,因此第一个参数选择数字1,第二参数可忽略。
具体公式是=GET.WORKBOOK(1),最后点击确定。

如果要对新建名称的内容修改,直接点击【名称管理器】调出以下信息框即可修改。

3、简单调用自定义名称后的宏表函数
在任意单元格输入=目录,便能得到一个由工作表名称组成的水平数组 {[工作簿名称.xlsx]工作表名称1, [工作簿名称.xlsx]工作表名称2,……}

三、提取工作表名称
我们发现直接调用宏表函数时得到的数组并不能直接使用,这需要我们借助其他函数来把工作表名称提取出来。
1、第一步,使用INDEX函数和ROW函数,将水平数组转换成纵向区域内的一列。
ROW函数:=ROW(单元格),得出某个单元格在第几行。
INDEX函数:=INDEX(数组区域,行号),引用数组区域内行号所在单元格的内容。
此时,INDEX函数内的数组区域是能调用宏表函数的名称,即目录。行号用公式ROW函数获取,=ROW(A1)的结果是1。公式如下:
=INDEX(目录,ROW(A1))
公式中的A1是随着公式下拉而发生变化的,可以理解为引用数组中的第几个工作表名称。ROW(A1)是第1个,ROW(A2)是第2个,以此类推。“目录”是创建好的名称。

2、从“[工作簿名称.xlsx]工作表名称”格式中提取出工作表名称。
(1)使用快捷键CTRL+E向下填充
由以上公式,得到的是诸如“[函数学习.xlsx]汇总”等格式内容,为了更简洁和贴合工作表目录,需要把工作表名称提取出来。比较简单方便的操作是用快捷键CTRL+E来提取。操作如下:
首先,把第一步得到的结果复制粘贴为数值;然后,复制工作表名称粘贴到相邻的单元格;最后,选中带有工作表名称的单元格及要填充的区域,按下CTRL+E。
注意:填充的区域必须是和原始数据的区域单元格相邻,如果隔一列,使用快捷键会提示:我们查看了所选内容旁边的所有数据,没有看到用于填充值的模式。要使用快速填充,请输入几个想要看到的输出示例,使想要填充的列中单元格保持活动状态,然后再次单击“快速填充“按钮。

提示:excel中的数据分列功能也可行

(2)函数嵌套提取工作表名称
更复杂一点的是,用函数RIGHT、LEN、FIND来提取。
RIGHT函数:从一个文本字符串的最后一个字符开始返回指定个数的字符。
=RIGHT(要提取的文本,要提取的字符数)
LEN函数:返回文本字符串中的字符个数。
=LEN(要计算长度的文本字符串;包括空格)
FIND函数:返回一个字符串在另一个字符串中出现的起始位置(区分大小写)
=FIND(“字符A”,包含字符A的字符串)
公式如下:
=RIGHT(A3,LEN(A3)-FIND("]",A3))

亦可直接在原来的公式基础上修改:
=RIGHT(INDEX(目录,ROW(A1)),LEN(INDEX(目录,ROW(A1)))
-FIND("]",INDEX(目录,ROW(A1))))

四、创建超链接
在一番努力下,终于把工作表目录整理出来了,创建超链接方法主要有两种。
1、通过菜单中的超链接创建
(1)选中要插入超链接的单元格,右键打开菜单点击链接或直接用快捷键打开。快捷键:CTRL+K。
(2)在出现的页面中,点击【本文档中的位置】,选择当前需要创建链接的文档名称。最后确定,便能创建超链接了。

2、HYPERLINK函数创建超链接
HYPERLINK函数的一个参数要求是文本,如果要直接引用内容所在的单元格,那么需要用到连接符“&”。当公式中出现特殊符号时,HYPERLINK函数要用英文单引号将其括起来才能识别。
格式如下:
HYPERLINK("#'"&要创建超链接的单元格&"'!要链接文档的任意单元格",显示的内容)
最外层是双引号,第二层是单引号,第三层是双引号,由外而内。
最终函数如下:
=HYPERLINK("#'"&A4&"'!A1",A4)

五、拓展
现有的工作表我们都提取名称创建超链接了,要是后面再新增一个工作表,就不能实现提取更新了。这种情况下,我们要怎么办?
1、修改宏表函数
在定义名称处修改引用的宏表函数,在原有的基础上加入T(NOW())函数,引用位置内容改为:
=GET.WORKBOOK(1)&T(NOW())

2、T函数和NOW函数
T函数:检测给定值是否为文本,如果是文本按原样返回,如果不是文本则返回双引号(空文本)
NOW函数:返回日期时间格式的当前日期和时间。
= T(NOW())
此函数既实现了时间的更新,又确保了返回的是一个空文本,对工作表名称没有影响。这样调用GET.WORKBOOK(1)&T(NOW())函数时,能确保工作簿中工作表目录的实时更新。
感谢观看~
夜雨聆风