活躍一下氣氛,送書活動繼續開始。老規則,從留言區随機抽取3位粉絲,贈送書籍《Excel效率手冊 早做完,不加班》。
1.新版TEXT
老版本的TEXT很強大,不過有一個小缺陷,就是處理超過15位字符的時候會出錯。比如,将身份證号碼,中間用空格隔開,後面的幾位數都當成0處理。
老版:
=TEXT(A2,"000000 0000 0000 0000")新版:
用法是一樣的,隻是前面帶個X,有X的都牛逼,比如以前的XLOOKUP。
老版能用的,新版都能用,比如将日期轉換成年月的形式。
2.新版PHONETIC
老版的PHONETIC隻能将内容合并,不能用分隔符号隔開,同時也解決了老版不能合并數字的尴尬。
老版:
新版:
3.新版PZ
老版是無法提取批注的内容,新版增加了PZ,輕松就将批注提取出來。
新版本除了這些,還提供了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
好,今天就講到這裡,有沒迫不及待想自己開發一個新函數的想法?
有話要說...