各位朋友,你们好。 最近和网友沟通交流Excel问题,好些问题都没法直接实现,因此用了很多自定义函数,也给头条里的朋友写过几个自定义函数(比如颜色计算的函数、提取不重复内容的函数、汉字转拼音的函数……)。 在办公过程中,总需要把复杂的事情简单解决,于是用到了VBA代码。用VBA解决一些手工办起来繁琐重复的事情,又快又准又好。是便捷高效。 今天就和你们分享下Excel的自定义函数。详细内容如下: 1、什么是自定义函数; 2、自定义函数怎么使用; 3、怎样让自定义函数可以嵌套内置函数; 4、怎样设置客可忽略的函数参数; 5、私有与公有属性自定义函数的区别; 6、自定义函数放在模块和工作表中的区别; 一、什么是自定义函数 自定义函数:这也是一种函数,用户根据自己的需求,为完成特定的功能而自己编写的函数代码。有别于Excel自带的函数,所以叫做自定义函数。Excel自带的函数叫做内置函数。 自定义函数的代码结构 Function 函数名称(函数参数) 实现函数功能的代码 End Function 自定义函数的好处: 1、将复杂的问题简单化,碰到相同的,或类似的问题,修改参数就OK了; 2、可以重复使用,不用每用一次都写大段的代码,直接一句函数和参数就可以了; 3、需要修改时,只修改函数内的代码即可,不用再每一个使用的地方都修改; 4、自定义函数可以在工作表中像自带公式一样使用,也可以在窗体过程中调用。 二、自定义函数怎么使用 自定义函数的代码,一般放在VBE编辑器的【模块】中。在模块中设置好代码后,就可以在工作表中直接使用,就像使用Excel内置函数一样(效果见下图)。 自定义函数的使用 三、怎样让自定义函数可以嵌套内置函数 有些时候,我们需要将像使用内置函数一样,进行一些函数的嵌套计算,如何才能在自定义函数中实现与内置函数的嵌套使用呢?我们先看下图: 内置函数嵌套 如动图演示中所示: 1、当函数的第一个参数申明为Range型时,用VLOOKUP函数提取数据后进行字符串提取,会显示错误值。这是由于VLOOKUP函数的结果,是一个具体的值,其类型不是Range,所以结果会出错; 2、让我把函数第一个参数的类型修改为Variant型时,就可以嵌套计算; 3、当我把函数的第一个参数变量类型删除时,也可以正常计算。 4、这里的Variant,是什么意思呢?Variant就是可变的数据类型,可以存放任何数据(不设置变量类型,则默认就是Variant,第三种演示结果); 5、当函数参数类型为Range时,可以与内置函数的OFFSET、INDEX、INDIRECT函数嵌套,因为这几个函数时引用函数,返回的内容是单元格,和Range类型是一样的。 扩展:既然Variant类型是万能的,在实际使用中,在申明变量时,可否就不用申明变量类型呢? (先透露下,这个话题是我下篇文章的内容,这里只做简单介绍) 解答:在有速度要求和空间限制的情况下不要用variant.,因为variant类型数据占用字符多,所以一般人很少用。.vba默认未定义的数据类型是variant. 有这个默认我就懒得定义数据类型直接用变量这样写代码省时间,但是代码运行会慢,如果你电脑配置足够好,那就不用考虑节省空间的问题。 四、怎样设置可以忽略的函数参数 要设置自定义函数可忽略的参数,可以在参数前面添加【Optional】,这里的Optional就是设置可选参数。写法如下: Function 函数名称(参数1,Optional 参数2) 实现函数功能的代码 End Function 1、可选参数效果1: 在效果1中,我们设置函数的第二参数为可选参数,不写第二参数,内容就直接合并;设置了第二参数,内容就用连接符全部连接起来。 2、可选参数效果2: 在效果2中,我们设置函数的第二参数默认值,不写第二参数,内容就用默认连接符合并;设置了第二参数,内容就用设置的连接符合并起来。 五、自定义私有与公有函数 Private:定义私有属性,只能在函数所在的模块中使用; Public:定义公有属性,整个程序都能使用(若未注明Private,则默认是Public)。 注意:: 1、以上概念,对SUB过程也是一样的效果; 2、只要自定义函数的代码在模块中,无论是私有还是公有,都不影响在工作表中的使用; 3、所以,这里的私有和公有,仅在于用VBA代码调用函数上的差异。 下面我用一个示例展示下: 图中展示了三个效果: 1、将函数定义为私有函数时,在工作表中可以正常使用; 2、将函数定义为私有函数时,在另一个模块中就无法调用; 3、将函数的属性修改为公有时,在另一个模块中就可以正常使用了。 六、自定义函数放在模块和工作表中的区别 都是在VBE编辑器中,将代码放在模块中,和把代码放在工作表代码中,有什么区别呢?看图: 上图演示了两个效果: 1、当自定义函数代码在模块中时,在工作表中使用正常; 2、当把自定义函数代码放到工作表代码区域中时,在工作表中失效。 所以,我们要使用自定义函数,就需要将自定义函数的代码放在模块中。 今天,关于自定义函数的基础内容,包含了函数代码的写法、使用,怎么样可以让自定义函数嵌套内置函数,怎么样设置自定义函数的可选参数、怎么样设置自定义函数的参数默认值等。希望能对各位朋友有所帮助。 我是上班下班,因为爱好办公软件、喜欢分享。所以来到这里将我的学习心得和踩过的一些坑,和大家聊聊,希望大家学习我成功的经验,避开我踩过的坑。我和你们一起进步。 |
|
来自: 王意pu3eupsbkg > 《Excel文件》