知识树投稿区

chrisfang Lv.19

关注
本帖最后由 chrisfang 于 2014-4-3 18:41 编辑

知识点:宏表函数Get.Document应用
所属领域:函数和公式
原帖地址:http://club.excelhome.net/thread-161588-2-1.html
原帖作者:gouweicao78

这是个宏表函数取得工作表名称的“定义名称”
方法:【插入】>【名称】>定义shtname>在【引用位置】输入公式>
=SUBSTITUTE(GET.DOCUMENT(1),"["&GET.DOCUMENT(88)&"]",)&T(NOW())
>【确定】
在某单元格输入=shtname,就能返回该工作表名称。

详细解释如下:
1、首先,get.document(1)是宏表4.0函数(可以搜论坛下载一个帮助说明):
如果工作簿中不只一张表,用文字形式以“[book1]sheet1”的格式返回工作表的文件名。否则,只返回工作簿的文件名。工作簿文件名不包括驱动器,目录或窗口编号。通常最好使用 GET. DOCUMENT(76)
和 GET. DOCUMENT(88) 来返回活动工作表和活动工作簿的文件名。
get.document(88)以“book1”的形式返回活动工作簿的文件名。

2、=SUBSTITUTE(GET.DOCUMENT(1),"["&GET.DOCUMENT(88)&"]",)
——就是将[book1.xls]sheet1中的[]号及book1替换为空,得到sheet1

3、now()是一个易失性函数,随着Excel的一些动作比如编辑单元格等变化,产生当前时间(数值的一种),T()函数对文本返回文本自身,对数值返回空。所以&T(now())相当于&"",只不过这个""会随时变化。
这样连起来就使得我们用shtname得到的工作表名称是一个可以随着Excel动作(如改变工作表名也是动作)而“实时”变化的工作表名

常用的几个取当前工作表名的公式:(基本都是用宏表函数,套上文本处理)
=SUBSTITUTE(GET.DOCUMENT(76),"["&GET.DOCUMENT(88)&"]",)&T(NOW())
=REPLACE(GET.DOCUMENT(76),1,FIND("]",GET.DOCUMENT(76)),)&T(NOW())
=MID(GET.DOCUMENT(76),FIND("]",GET.DOCUMENT(76))+1,255)&T(NOW())

另:不用宏表函数取得工作表名称的方法:
在单元格中输入:
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)
——可得到工作表名,其原理同上,主要是利用CELL函数用"filename"作第1参数取得带路径的工作表名。
在定义名称中使用(强烈推荐):
shtname=MID(CELL("filename",!A1),FIND("]",CELL("filename",!A1))+1,255)
——这是个工作簿级的定义名称,可以得到工作簿中公式所在工作表的名称。
注意:CELL函数要求Excel文件已保存。







1 人给楼主打赏
1.2万阅读
5回复 倒序

羽希 Lv.4 2楼

神州第一才子四海无双巨匠的方版果然名不虚传
学习了 对汇总工作非常有用 还有宏表函数和cell用法的介绍
弱弱说一句最近发现VBA也很方便

羽希 Lv.4 3楼

本帖最后由 羽希 于 2014-4-3 16:27 编辑

为什么宏表函数啊?微软为什么不将cell直接进行改进?

zbn1984918 Lv.1 4楼

定义名称用 =MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,99)&T(NOW())之后,用=IFERROR(HYPERLINK("#"&INDEX(shname,ROW(A1))&"!A1",INDEX(shname,ROW(A1))),"") 取工作表名做目录,请问为什么会在表名有空格或者“-”的时候显示“reference not valid"? 我的公式是否有问题?

kaile2598 Lv.1 5楼

用易失性函数是因为很多宏表函数不会自动更新

匪匪匪 Lv.1 6楼

如果 不用 宏表函数,怎么取得所有工作表名称?

就是说,想提取同一个工作簿里面的,所有工作表名称,而且 不用 宏表函数?

  1. shtname=MID(CELL("filename",!A1),FIND("]",CELL("filename",!A1))+1,255)

上面这个名称仅适用于当前工作表,并不适合 “提取所有工作表”

因为加载宏的时候(许多人默认的宏安全性级别为高),许多人不知道在哪设置宏安全性(当多人使用表格的时候),所以感觉宏表函数对于许多人不很方便,我更希望,分享的表格大家都方便使用.

谢谢各位老师的关注.

已显示全部内容