Join函數和Split函數

【分享成果,隨喜正能量】世上有兩樣東西不可直視,一是太陽,二是人心。走坎坷,歷風雨,坦然面對每一天,讓風雨淺釋歲月美麗;聽花開,看雨落,用一顆純澈的心,感悟流年婉轉,時光變遷;靜待花開,情亦溫暖。似水流年,捻一指微笑如花,靜候歲月美麗。清淺時光,心有明媚,處處溫暖,情有陽光,時時燦爛。

《VBA數組與字典方案》教程是我推出的第三套教程,目前已經是第一版修訂瞭。這套教程定位於中級,字典是VBA的精華,我要求學員必學。七、三、一套教程掌握後,可以解決大多數工作中遇到的實際問題。

這套教程共兩冊,八十四講,今後一段時間會給大傢陸續推出修訂後的教程內容。今日的內容是第25講:Join函數和Split函數

第二十五講 數組的合並(Join)拆分(Split)及篩選(Filter)

大傢好,我們今日繼續講解VBA數組與字典解決方案第25講:數組的合並拆分及篩選的應用。這講的內容中拆分(Split)及篩選(Filter)兩個函數在我之前的章節中已經講過瞭,這裡僅僅再次提出一下。

1 Join函數說明

此函數返回一個字符串,該字符串是通過連接某個數組中的多個子字符串而創建的。

語法如下:Join(sourcearray[, delimiter])

參數sourcearray是必須的,包含被連接子字符串的一維數組。

參數delimiter是可選的,在返回字符串中用於分隔子字符串的字符,如果忽略則使用空格(" ")來分隔子字符串。則列表中的所有項目都連接在一起,中間沒有分隔符。

2 split函數說明

這個函數的講解在之前已經講過,是拆分字符串的函數,返回一個下標從零開始的一維數組,包含指定數目的子字符串,語法如下:

Split(expression[, delimiter[, limit[, compare]]])

參數expression是必須的,包含子字符串和分隔符的字符串表達式。

參數delimiter是必須的,用來標識子字符串邊界的字符串字符。如果忽略,則使用空格字符(" ")作為分隔符。

多個字符的合並和字符串按規律的拆分是經常遇到的,例如:A-REW-E-RWC-2-RWC 按分隔符“-”拆分成6個字符放在一個數組中;有一組數array(23,45,7,1,76)想用分隔符-連接成一個字符串。上面兩種情況的實現即用到:split(字符串,"分隔符") 拆分字符串。join(數組,"分隔符") 用分隔連接數組的每個元成一個字符串

值得註意的是:split和join隻能對一維數組進行操作。

3 Filter函數說明

返回一個下標從零開始的數組,該數組包含基於指定篩選條件的一個字符串數組的子集。filter()是數組的一個常用操作,它用於把Array的某些元素過濾掉,然後返回剩下的元素。

語法:Filter(sourcesrray, match[, include[, compare]])

sourcesrray必須的。要執行搜索的一維字符串數組。

match必須的。要搜索的字符串。

include可選的。Boolean值,表示返回子串包含還是不包含match字符串。如果include是True,Filter返回的是包含match子字符串的數組子集。如果include是False,Filter返回的是不包含match子字符串的數組子集。

compare可選的。數字值,表示所使用的字符串比較類型。

Filter函數實現數組篩選:數組的篩選就是根據一定的條件,從數組中篩選符合條件的值,組成一個新的數組,實現數組篩選的Filter函數用法:Filter(數組, 篩選的字符, 是否包含)

遺憾的是函數隻能進行模糊篩選,不能精確匹配。

4 數組函數的實例應用及講解

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實踐經驗,全部濃縮在下面的各個教程中:

发表回复

相关推荐

燕山運動——引力地質學

燕山運動(又稱老阿爾卑斯階段)是侏羅紀到白堊紀時期中國廣泛發生的地殼運動。我國許多地區地殼因為受到強有力的擠壓,褶皺...

· 18分钟前

華為發展的九個成長理念,這才是大公司背後的底層邏輯

一個企業隻要具備瞭正確做事的機制,就很難犯錯。華為光思考如何正確地做事,就花瞭十年時間。文|胡偉來源|華夏基石e洞察(...

· 27分钟前

從“雲”的漢字書法演變,看中國文化有為、無為的美學境界

文:高天晨中國文化是一個側重人的感知與經驗的文化,中國的藝術更具體的表達為人的身心狀態,故而有不同層次的境界和修為。...

· 37分钟前

可适用于任意平面的虚拟键盘,会为VR产业带来什么?

摘要:如果这项技术能够进一步发展,将能解决一个长期困扰VR的问题——除了语音,如何在VR中快速输入文字的问题。

· 53分钟前

手把手教你怎么查软著

什么是软著? 首先,我们来介绍一下什么是软著。软著全称为“软件著作权”,是指对软件著作人依法享有的专有权利。简单来说, ...

· 59分钟前