原创作者: 卢子1987 转自:Excel不加班

Text函数有百变神君,文本之王等称号,超牛逼。不过再牛逼的函数,也都会有缺陷。

超过15位字符,用Text函数处理就会出错,把超出的数字当0处理。先跟着卢子来看下实例。

Text:

=TEXT(A2,"000000 00000000 0000")

新版Text:

=Text1(A2)

新版Text,你应该是第一次看见,你的电脑目前是没有的。这个是2020/6/9这一天卢子开发出来的。

Excel内置函数很难完成的时候,可以自己开发函数,开发函数其实并不难,你也可以!

老方法,进入VBA的后台,插入一个模块。

在今天之前,我们看到的代码都是这种格式。

Sub Text1()
代码
End Sub

其实,还有另外一种形式。

Function Text1()
代码
End Function

下面这种形式,就是用来开发新函数用的。

先来回顾一下Excel的SUM函数。输入=,函数名称,()里面输入参数。

=SUM(A2:A5)

新版函数,卢子起名为Text1,()里面也只有一个参数,跟SUM函数很像。

在()里面输入一个参数,比如t。

代码就是要实现的功能,想实现跟Text一样的分隔效果,不过后面的0要正常显示。

在VBA中,Format的作用就跟Text一样,不过更加人性化。

中间的代码按照Text的写法操作。

Text1 = VBA.Format(t, "000000 00000000 0000")

好,这样就开发了一个新版Text。

回到Excel中,输入刚刚开发的函数,就可以了。

哈哈哈,开发新函数就这么简单。以后如果微软的函数不满足你,你就自己开发一个,没什么大不了的。

继续往下看,现在要开发一个从身份证提取生日的函数。

原来用Text函数。

=TEXT(MID(A2,7,8),"0-00-00")
打开网易新闻 查看精彩图片

刚刚说过,Format的作用就跟Text一样,其实VBA中也有Mid,也就是说直接照搬就行,把A2改成变量t就可以。

Function 生日(t)
生日 = VBA.Format(Mid(t, 7, 8), "0-00-00")
End Function

又开发了一个新函数,就这么简单。

回到Excel,看看新函数的效果。

自己开发的函数,可以起中文名称,这样就更容易理解。