宏表函数的两个新用法:批量建立分表和辅助打印设置
作者:E图表述来源:部落窝教育发布时间:2020-06-17 16:26:51点击:3114
编按:
哈喽,大家好!今天我们分享两个宏表函数新用法:直观显示出打印信息确保按需打印、根据总表批量建立分表。宏表函数是看不见的函数,能实现一些工作表函数不能实现的功能。赶紧来看看吧~
【前言,有关“宏表函数”的几点信息】
●在EXCEL的世界里,有一组特殊的函数存在,它不是EXCEL内置工作表函数,所以在功能区中使用“插入函数”时,是看不见它的;
●因为看不见,所以此类函数不能直接应用到单元格中;
●虽然看不见,但是它却可以实现一些工作表函数不能实现的功能;
●甚至在不会使用VBA的情况下,它实现了一些VBA的功能;
●在使用这类函数的时候,一定要设置“宏安全性”才能够被使用;
●这类函数是VBA的前身,所以我们叫这类函数为“宏表函数”!!
【什么是宏表函数】
我们今天之所以来讲解“宏表函数”,是因为它的某些功能是工作表函数所不能实现的,在某些数据环境中,宏表函数可以给我们解决一些关键的问题。
那什么是宏表函数呢?在EXCEL的发展历程中,因为其开发的宗旨就是要实现“办公自动化”,在20世纪90年代就在WINDOWS 3.0阶段,推出了EXCEL4.0宏表,这种宏表功能可以作用于EXCEL97-2003版本中。
由于微软开发更新的速度相当快(往往3年就会更新OFFICE版本),所以更多的XLM宏技术被引入到VBA中,所以在如今普遍学习EXCEL(OFFICE)的大趋势下,XLM宏表(EXCEL4.0宏)还没有被更多的人所熟悉,就被VBA所取代了。
而且VBA有着更加完善和方便的对象引用,也使得EXCEL4.0宏很少被问津。可是微软却在历代EXCEL版本中都保留了对EXCEL4.0的兼容性,所以我们现在依然可以在每一个高级版本中使用它,不得不说,有的时候,“宏表函数”在某些数据环境下有着不可忽视的作用,甚至更加方便与简单。
如果我们使用了EXCEL4.0宏表函数,就一定要像对待VBA一样,设置“宏安全性”,才可以正常地使用它。设置如下:
如果使用了宏表函数,在保存之前,EXCEL也会提示是否保存在“启用宏的工作薄”。
【学习使用宏表函数】
正文之前再说一遍:宏表函数,不能直接作用在单元格内,必须在自定义名称中使用,如果直接在单元格使用,EXCEL将不识别(工作表中输入的是工作表函数)。
每一个宏表函数,都有很多的返回功能,分别用阿拉伯数字代表功能指针,如GET.CELL(8)、GET.DOCUMENT(60),这种形式代表某一个返回值格式,可以说宏表函数的语法是唯一的,但是因为“指针”不同,功能也不一样。
但有一点需要注意,宏表函数往往都是对目标对象的现有属性的返回值,而不是去改变这些属性,所以很多的指针功能可能对于日常工作没有太多的意义,我们就不用把每一个都讲到了,今天只对其中一种比较实用,且网文不多见的宏表函数做一些介绍吧。
【GET.DOCUMENT函数】
共有1~88个指针,举几个例子:
案例1:直观的辅助打印说明
我们经常会打印一些报表,也常设置一些打印的参数,例如标题行,打印区域等等。但是有的时候,在打印出来之后,才发现有的设置没有到位或者遗漏了,这样就造成工作的重复和资源的浪费。那么我们此时可以用宏表函数来创建一个打印信息的辅助说明,直观的给予打印前校对提供一些支持。如下所示:
制作方法:
STEP1:按CTRL+F3打开“名称管理器”窗口,点击“新建”按钮,弹出“新建名称”窗口。
STEP2:在名称文本框中输入【纸张大小】,在引用位置文本框中输入宏表函数【=GET.DOCUMENT(77)&T(NOW())】,点击“确定”按钮保存设置,如图所示。
STEP3:这个名称就可以像工作表函数一样,在单元格中使用函数输入的方式【=纸张大小】,就可以返回相对应的内容。
注意
一般来说,宏表函数的运行需要CTRL+ALT+F9的操作来更新,所以我们利用NOW()函数的易失性,使其在操作单元格或者激活工作表的时候更新。再用T函数将NOW函数的数值转换成空文本即可。之所以我们“约定俗成”的使用NOW函数,是因为NOW函数运行时产生的内存较小,其实用其他易失函数也是可以的,但会增加无用的运算,所以同学们也都“约定俗成”好了。
宏表函数的用法,基本就是上面的这三步内容:1创建名称,2选择宏表函数和指针,3在工作表中使用【=刚才设置的名称】的方式调用宏表函数的返回值。介于篇幅的问题,下面的案例,我们就只讲功能指针的作用和案例用法,不再讲制作过程。
以下是针对案例一所涉及的指针功能的设置以及说明:
GET.DOCUMENT(82):如果在“页面布局”-“页面设置”的“工作表”标签中设置了【打印标题】,此指针返回标题区域(显示的R6,代表第6行);
GET.DOCUMENT(81):如果在“页面设置”的“工作表”标签中设置了【打印区域】,此指针返回打印区域的地址;
GET.DOCUMENT(77):返回设置的打印纸张的大小,一般默认是A4纸张大小,但是如果是法律、文书等特殊纸张大小的,这个功能还是很方便的。在这里也说一句,此指针一共有7个返回结果,如下。
返回值 |
对应纸张大小 |
1 |
Letter 8.5x11 in |
2 |
Letter Small 8.5 x 11 in |
5 |
Legal 8.5 x 14 in |
9 |
A4 210 x 297 mm |
10 |
A4 Small 210 x 297 mm |
13 |
B5 182 x 257 mm |
18 |
Note 8.5 x 11 in |
这里我们可以使用VLOOKUP函数,对于纸张大小的返回值进行处理,使其返回对应的纸张大小,如案例中B1单元格函数改写成:
=VLOOKUP(--纸张大小,{1,"Letter 8.5x11in";2,"Letter Small8.5x11in";5,"Legal 8.5x14in";9,"A4 210x297mm";10,"A4 Small210x297mm";13,"B5 182x257mm";18,"Note 8.5x11in"},2,0)
纸张大小的名称前面加上了{--}减负函数,是因为我们使用宏表函数时候用了T(NOW()),返回值会变成文本,所以需要用减负函数再转换成数值。
GET.DOCUMENT(50):当前的打印设置条件下,打印的总页数。
案例2:批量建立分表
往常的文章中,有很多都是用分表建立总表的教学。今天我们利用总表,通过宏表函数来建立分表。例如,很多公司都会在固定的时间周期内,给供应商或者经销商发送《询证函》,作为当前应收款或者应付款的回执凭证。如下表所示:
模板的样式如下:
制作方法:
STEP1:创建模板表,涉及宏表函数如下。
GET.DOCUMENT(88):返回当前工作薄名称,格式为:工作簿名称.xlsm。
GET.DOCUMENT(76):返回活动工作表的名称,格式为:[工作簿名称.xlsm]工作表名称。
STEP2:编写《询证函》模板。
然后在C4单元格输入函数【=SUBSTITUTE(活动表名,"["&工作薄名&"]","")】,利用SUBSTITUTE函数替换[工作簿名称.xlsm] 的部分,得到活动工作表的名称;
在E10单元格中输入函数【=VLOOKUP($C$4,目录!B:E,2,0)】,引用对应的金额;
在E11单元格中输入函数【=TEXT(E10,"[dbnum2]")】,输出大写金额。
E12、E13;E14、E15单元格函数同理,用法比较常规,就不做解释了。
STEP3:按照供应商或者销售商名称作为工作表名称建立分表。
STEP4:全选《模板》工作表的内容,复制,再结合CTRL键,复选除《目录》《模板》以外的工作表,按CTRL+V粘贴,完成制作,此时每一个分表就建立好了。
按住CTRL键,复选工作表之后,可以在复选的状态下,批量调整页边距等页面设置,也可以批量打印,上面的这个方法可以大量的节省制表过程,提高效率。
【编后语】
今天就给大家“扒出来”两个宏表函数新用法的思路,宏表函数还有很多内容,有的时候需要不同的宏表函数结合使用,或是结合工作表函数一起使用,这些都会产生神奇的效果,如果同学们对这类函数的另类效果有兴趣,那就留言告诉我们,部落窝会继续对它们“深扒”。
本文配套的练习课件请加入QQ群:1043683754下载。
做Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!
扫下方二维码关注公众号,可随时随地学习Excel:
相关推荐:
打印的妙招①《5条私藏独门绝技,10秒解决Excel计算不一致打印不全等难题》
打印的妙招②《解决常见的Excel打印难事儿》
打印的妙招③《做表、打印表有被表头为难过?这8招,搞定excel所有表头问题》
打印的妙招④《你遇到的那些Excel打印问题都在这儿了》