活跃一下气氛,送书活动继续开始。老规则,从留言区随机抽取3位粉丝,赠送书籍《Excel效率手册 早做完,不加班》。
3月2日下午,微软推出了最新版本Excel2022,里面的函数个个牛逼,一睹为快。
1.新版TEXT
老版本的TEXT很强大,不过有一个小缺陷,就是处理超过15位字符的时候会出错。比如,将身份证号码,中间用空格隔开,后面的几位数都当成0处理。
老版:
=TEXT(A2,"000000 0000 0000 0000")
新版:
=XTEXT(A2,"000000 0000 0000 0000")
用法是一样的,只是前面带个X,有X的都牛逼,比如以前的XLOOKUP。
老版能用的,新版都能用,比如将日期转换成年月的形式。
=XTEXT(A2,"yyyy年mm月")
2.新版PHONETIC
老版的PHONETIC只能将内容合并,不能用分隔符号隔开,同时也解决了老版不能合并数字的尴尬。
老版:
=PHONETIC(A2:C2)
新版:
=XPHONETIC(A2:C2,"-")
3.新版PZ
老版是无法提取批注的内容,新版增加了PZ,轻松就将批注提取出来。
=Pz(B2)
新版本除了这些,还提供了HB、NowTime等等一系列函数,都非常智能。
看完有没想去下载Excel2022,去体验一把呢?
其实,以上都是卢子给你开的玩笑,这些都是自定义函数。
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,看看新函数的效果。
自己开发的函数,可以起中文名称,这样就更容易理解。
文章开头提到的3个函数源代码:
Function XTEXT(Rng, x)
XTEXT = VBA.Format(Rng, x)
End Function
Function XPHONETIC(Rng, x)
For Each Set_Rng In Rng
XP = XP & IIf(XP = "", "", x) & Set_Rng
XPHONETIC = XP
Next
End Function
Function PZ(Rng)
On Error Resume Next
x = Rng.Comment.Text
PZ = Mid(x, InStr(x, Chr(10)) + 1)
End Function
好,今天就讲到这里,有没迫不及待想自己开发一个新函数的想法?