【分享成果,隨喜正能量】世上有兩樣東西不可直視,一是太陽,二是人心。走坎坷,歷風雨,坦然面對每一天,讓風雨淺釋歲月美麗;聽花開,看雨落,用一顆純澈的心,感悟流年婉轉,時光變遷;靜待花開,情亦溫暖。似水流年,捻一指微笑如花,靜候歲月美麗。清淺時光,心有明媚,處處溫暖,情有陽光,時時燦爛。
《VBA數組與字典方案》教程是我推出的第三套教程,目前已經是第一版修訂瞭。這套教程定位於中級,字典是VBA的精華,我要求學員必學。七、三、一套教程掌握後,可以解決大多數工作中遇到的實際問題。
這套教程共兩冊,八十四講,今後一段時間會給大傢陸續推出修訂後的教程內容。今日的內容是第25講:Join函數和Split函數
第二十五講 數組的合並(Join)拆分(Split)及篩選(Filter)
大傢好,我們今日繼續講解VBA數組與字典解決方案第25講:數組的合並拆分及篩選的應用。這講的內容中拆分(Split)及篩選(Filter)兩個函數在我之前的章節中已經講過瞭,這裡僅僅再次提出一下。
此函數返回一個字符串,該字符串是通過連接某個數組中的多個子字符串而創建的。
語法如下:Join(sourcearray[, delimiter])
參數sourcearray是必須的,包含被連接子字符串的一維數組。
參數delimiter是可選的,在返回字符串中用於分隔子字符串的字符,如果忽略則使用空格(" ")來分隔子字符串。則列表中的所有項目都連接在一起,中間沒有分隔符。
這個函數的講解在之前已經講過,是拆分字符串的函數,返回一個下標從零開始的一維數組,包含指定數目的子字符串,語法如下:
Split(expression[, delimiter[, limit[, compare]]])
參數expression是必須的,包含子字符串和分隔符的字符串表達式。
參數delimiter是必須的,用來標識子字符串邊界的字符串字符。如果忽略,則使用空格字符(" ")作為分隔符。
多個字符的合並和字符串按規律的拆分是經常遇到的,例如:A-REW-E-RWC-2-RWC 按分隔符“-”拆分成6個字符放在一個數組中;有一組數array(23,45,7,1,76)想用分隔符-連接成一個字符串。上面兩種情況的實現即用到:split(字符串,"分隔符") 拆分字符串。join(數組,"分隔符") 用分隔連接數組的每個元成一個字符串
值得註意的是:split和join隻能對一維數組進行操作。
返回一個下標從零開始的數組,該數組包含基於指定篩選條件的一個字符串數組的子集。filter()是數組的一個常用操作,它用於把Array的某些元素過濾掉,然後返回剩下的元素。
語法:Filter(sourcesrray, match[, include[, compare]])
sourcesrray必須的。要執行搜索的一維字符串數組。
match必須的。要搜索的字符串。
include可選的。Boolean值,表示返回子串包含還是不包含match字符串。如果include是True,Filter返回的是包含match子字符串的數組子集。如果include是False,Filter返回的是不包含match子字符串的數組子集。
compare可選的。數字值,表示所使用的字符串比較類型。
Filter函數實現數組篩選:數組的篩選就是根據一定的條件,從數組中篩選符合條件的值,組成一個新的數組,實現數組篩選的Filter函數用法:Filter(數組, 篩選的字符, 是否包含)
遺憾的是函數隻能進行模糊篩選,不能精確匹配。
Sub MyNZsz_25() '第25講
【代碼講教程】
End Sub
代碼截圖:
216f366f13115b8c5187cada41e4374e
代碼講解:
1) myst = "A-REW-E-RWC-2-RWC" 'myst是字符串
arr = Split(myst, "-") 'arr是數組,Split返回的是一維數組
[a:e].ClearContents’ 清零A列到E列
[a1].Resize(UBound(arr) + 1) = WorksheetFunction.Transpose(arr)’配合轉置函數輸出數組
Range("b1") = Join(arr, ",") 'Join 返回的是字符串
2 ) arr1 = Array("ABC", "A", "D", "J", "CA", "ER") 'arr1是數組,是用Array建立的
Range("c1").Resize(UBound(arr1) + 1) = WorksheetFunction.Transpose(arr1)
myst1 = Filter(arr1, "A", True) 'myst1為數組,Filter 返回的是數組,是一個含“A”的數組
[d1].Resize(UBound(myst1) + 1) = WorksheetFunction.Transpose(myst1) 配合轉置函數輸出數組
下面看代碼的輸出結果:
fc1be95bb7430e034e683f5de045fca1
今日內容回向:
1 JOIN FILTER SPLIT 的意義是什麼?
2 上面的三個函數都可以返回數組嗎?
0d00f233b233dd1208b91af2acaa4ea7
我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中: