二维码 购物车
部落窝在线教育欢迎您!

宏表函数的两个新用法:批量建立分表和辅助打印设置

 

作者:E图表述来源:部落窝教育发布时间:2020-06-17 16:26:51点击:2851

分享到:
0
收藏    收藏人气:1人
版权说明: 原创作品,禁止转载。

编按:

哈喽,大家好!今天我们分享两个宏表函数新用法:直观显示出打印信息确保按需打印、根据总表批量建立分表。宏表函数是看不见的函数,能实现一些工作表函数不能实现的功能。赶紧来看看吧~

 

【前言,有关“宏表函数”的几点信息】

 

EXCEL的世界里,有一组特殊的函数存在,它不是EXCEL内置工作表函数,所以在功能区中使用“插入函数”时,是看不见它的;

因为看不见,所以此类函数不能直接应用到单元格中;

虽然看不见,但是它却可以实现一些工作表函数不能实现的功能;

甚至在不会使用VBA的情况下,它实现了一些VBA的功能;

在使用这类函数的时候,一定要设置“宏安全性”才能够被使用;

这类函数是VBA的前身,所以我们叫这类函数为“宏表函数”!!

 

【什么是宏表函数】

 

我们今天之所以来讲解“宏表函数”,是因为它的某些功能是工作表函数所不能实现的,在某些数据环境中,宏表函数可以给我们解决一些关键的问题。

 

那什么是宏表函数呢?在EXCEL的发展历程中,因为其开发的宗旨就是要实现“办公自动化”,在20世纪90年代就在WINDOWS 3.0阶段,推出了EXCEL4.0宏表,这种宏表功能可以作用于EXCEL97-2003版本中。

 

由于微软开发更新的速度相当快(往往3年就会更新OFFICE版本),所以更多的XLM宏技术被引入到VBA中,所以在如今普遍学习EXCELOFFICE)的大趋势下,XLM宏表(EXCEL4.0宏)还没有被更多的人所熟悉,就被VBA所取代了。

 

 

而且VBA有着更加完善和方便的对象引用,也使得EXCEL4.0宏很少被问津。可是微软却在历代EXCEL版本中都保留了对EXCEL4.0的兼容性,所以我们现在依然可以在每一个高级版本中使用它,不得不说,有的时候,“宏表函数”在某些数据环境下有着不可忽视的作用,甚至更加方便与简单。

 

如果我们使用了EXCEL4.0宏表函数,就一定要像对待VBA一样,设置宏安全性,才可以正常地使用它。设置如下:

 

 

如果使用了宏表函数,在保存之前,EXCEL也会提示是否保存在启用宏的工作薄

 

 

【学习使用宏表函数】

 

正文之前再说一遍:宏表函数,不能直接作用在单元格内,必须在自定义名称中使用,如果直接在单元格使用,EXCEL将不识别(工作表中输入的是工作表函数)。

 

 

每一个宏表函数,都有很多的返回功能,分别用阿拉伯数字代表功能指针,如GET.CELL8)、GET.DOCUMENT60),这种形式代表某一个返回值格式,可以说宏表函数的语法是唯一的,但是因为“指针”不同,功能也不一样。

 

但有一点需要注意,宏表函数往往都是对目标对象的现有属性的返回值,而不是去改变这些属性,所以很多的指针功能可能对于日常工作没有太多的意义,我们就不用把每一个都讲到了,今天只对其中一种比较实用,且网文不多见的宏表函数做一些介绍吧。

 

GET.DOCUMENT函数】

 

共有1~88个指针,举几个例子:

 

案例1:直观的辅助打印说明


我们经常会打印一些报表,也常设置一些打印的参数,例如标题行,打印区域等等。但是有的时候,在打印出来之后,才发现有的设置没有到位或者遗漏了,这样就造成工作的重复和资源的浪费。那么我们此时可以用宏表函数来创建一个打印信息的辅助说明,直观的给予打印前校对提供一些支持。如下所示:

 

 

制作方法:


STEP1CTRL+F3打开“名称管理器”窗口,点击“新建”按钮,弹出“新建名称”窗口。

 

 

STEP2在名称文本框中输入【纸张大小】,在引用位置文本框中输入宏表函数【=GET.DOCUMENT(77)&T(NOW())】,点击“确定”按钮保存设置,如图所示。

 

 

STEP3这个名称就可以像工作表函数一样,在单元格中使用函数输入的方式【=纸张大小】,就可以返回相对应的内容。

 

注意

 

一般来说,宏表函数的运行需要CTRL+ALT+F9的操作来更新,所以我们利用NOW()函数的易失性,使其在操作单元格或者激活工作表的时候更新。再用T函数将NOW函数的数值转换成空文本即可。之所以我们约定俗成的使用NOW函数,是因为NOW函数运行时产生的内存较小,其实用其他易失函数也是可以的,但会增加无用的运算,所以同学们也都“约定俗成”好了。

 

宏表函数的用法,基本就是上面的这三步内容:1创建名称,2选择宏表函数和指针,3在工作表中使用【=刚才设置的名称】的方式调用宏表函数的返回值。介于篇幅的问题,下面的案例,我们就只讲功能指针的作用和案例用法,不再讲制作过程。

 

以下是针对案例一所涉及的指针功能的设置以及说明:

 

 

GET.DOCUMENT82):如果在“页面布局”-“页面设置”的“工作表”标签中设置了【打印标题】,此指针返回标题区域(显示的R6,代表第6行);

 

 

 

GET.DOCUMENT81):如果在“页面设置”的“工作表”标签中设置了【打印区域】,此指针返回打印区域的地址;

 

 

GET.DOCUMENT77):返回设置的打印纸张的大小,一般默认是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.DOCUMENT50):当前的打印设置条件下,打印的总页数。

 

案例2:批量建立分表

 

往常的文章中,有很多都是用分表建立总表的教学。今天我们利用总表,通过宏表函数来建立分表。例如,很多公司都会在固定的时间周期内,给供应商或者经销商发送《询证函》,作为当前应收款或者应付款的回执凭证。如下表所示:

 

 

模板的样式如下:

 

 

制作方法:


STEP1创建模板表,涉及宏表函数如下。

 

 

GET.DOCUMENT88):返回当前工作薄名称,格式为:工作簿名称.xlsm

 

 

GET.DOCUMENT76):返回活动工作表的名称,格式为:[工作簿名称.xlsm]工作表名称。

 

STEP2编写《询证函》模板。

 

然后在C4单元格输入函数【=SUBSTITUTE(活动表名,"["&工作薄名&"]","")】,利用SUBSTITUTE函数替换[工作簿名称.xlsm] 的部分,得到活动工作表的名称;

 

E10单元格中输入函数【=VLOOKUP($C$4,目录!B:E,2,0)】,引用对应的金额;

 

E11单元格中输入函数【=TEXT(E10,"[dbnum2]")】,输出大写金额。

 

E12E13E14E15单元格函数同理,用法比较常规,就不做解释了。

 

STEP3按照供应商或者销售商名称作为工作表名称建立分表。

 

STEP4全选《模板》工作表的内容,复制,再结合CTRL键,复选除《目录》《模板》以外的工作表,按CTRL+V粘贴,完成制作,此时每一个分表就建立好了。

 

按住CTRL键,复选工作表之后,可以在复选的状态下,批量调整页边距等页面设置,也可以批量打印,上面的这个方法可以大量的节省制表过程,提高效率。

 

 

【编后语】

 

今天就给大家“扒出来”两个宏表函数新用法的思路,宏表函数还有很多内容,有的时候需要不同的宏表函数结合使用,或是结合工作表函数一起使用,这些都会产生神奇的效果,如果同学们对这类函数的另类效果有兴趣,那就留言告诉我们,部落窝会继续对它们“深扒”。

 

本文配套的练习课件请加入QQ群:1043683754下载。

Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!

扫下方二维码关注公众号,可随时随地学习Excel

IMG_256

相关推荐:

打印的妙招①《5条私藏独门绝技,10秒解决Excel计算不一致打印不全等难题

打印的妙招②解决常见的Excel打印难事儿

打印的妙招③做表、打印表有被表头为难过?这8招,搞定excel所有表头问题

打印的妙招④你遇到的那些Excel打印问题都在这儿了