VBA編程是經(jīng)常會(huì)用到字符串拆分函數(shù)SPLIT,用法也不復(fù)雜,但是大家對(duì)于這個(gè)函數(shù)的參數(shù)未必完全了解,下面結(jié)合示例講解一下參數(shù)的用法。
SPLIT函數(shù)的語(yǔ)法格式如下:
Split(expression, [ delimiter, [ limit, [ compare ]]])1參數(shù)含義
express需要拆分的字符串
delimiter參數(shù)為拆分的分隔符,如果省略則使用空格做為分隔符
limit指定返回字符串的數(shù)量
compare指定拆分子字符串時(shí)的比較類型
先來(lái)看一個(gè)示例,現(xiàn)在需要拆分Good good study day day up為單個(gè)單詞。
Sub Demo1() Dim strString As String Dim varResult As Variant Dim arrResult() As String strString = "Good good study day day up" varResult = VBA.Split(strString) arrResult = VBA.Split(strString)End Sub12345678VBA.Split(strString)省略delimiter參數(shù),則使用空格做為分隔符,拆分為6個(gè)單詞字符串,在【本地窗口】中可以查看數(shù)組的值,如下圖所示。
請(qǐng)注意變量聲明語(yǔ)句,用于保存結(jié)果的數(shù)組,可以使用如下兩種方式:Variant變量或者字符串?dāng)?shù)組,但是不可用聲明為Variant數(shù)組。
Dim varResult As Variant Dim arrResult() As String12一般情況下,都無(wú)須指定LIMIT參數(shù),下面看一個(gè)使用LIMIT參數(shù)的例子。對(duì)于一些國(guó)外地址如:888, Ocean Wind Rd, Markham, V4A,需要拆分為888,Ocean Wind Rd和Markham, V4A,而不是拆分為4段,此時(shí)就需要設(shè)置LIMIT參數(shù)為3。
Sub Demo2() Dim strString As String Dim arrResult() As String Dim i As Integer strString = "888, Ocean Wind Rd, Markham, V4A" arrResult = VBA.Split(strString, ",", 3) For i = LBound(arrResult) To UBound(arrResult) Debug.Print Trim(arrResult(i)) Next iEnd Sub12345678910接下來(lái)看一下如何使用compare參數(shù),下面示例代碼中設(shè)置為vbTextCompare,即執(zhí)行文本比較,也就是說(shuō)忽略字符大小寫區(qū)別(S和s都可以作為分界符)。如下代碼結(jié)果為包含4個(gè)元素的字符串?dāng)?shù)組(AAA,BBB,CCC和DDD)。
Sub Demo3() Dim strString As String Dim arrResult() As String Dim i As Integer strString = "AAAsBBBSCCCsDDD" arrResult = VBA.Split(strString, delimiter:="s", compare:=vbTextCompare) For i = LBound(arrResult) To UBound(arrResult) Debug.Print Trim(arrResult(i)) Next iEnd Sub12345678910如果將compare參數(shù)設(shè)置為vbBinaryCompare,那么結(jié)果就會(huì)不同了。
Sub Demo4() Dim strString As String Dim arrResult() As String Dim i As Integer strString = "AAAsBBBSCCCsDDD" arrResult = VBA.Split(strString, delimiter:="s", compare:=vbBinaryCompare) For i = LBound(arrResult) To UBound(arrResult) Debug.Print Trim(arrResult(i)) Next iEnd Sub12345678910字符串被拆分為三段,BBB和CCC之間的S不再做為分界符。
AAA
BBBSCCC
DDD
通過(guò)這個(gè)講解,希望大家完全明白了SPLIT函數(shù)的用法。