tft每日頭條

 > 科技

 > vba 數組篩選指定列

vba 數組篩選指定列

科技 更新时间:2024-10-18 07:53:01

大家好,我們今日繼續講解VBA代碼解決方案的第63講内容:數組的合并與字符串拆分(Join & Split),及篩選filter函數的應用

一Join函數:返回一個字符串,該字符串是通過連接某個數組中的多個子字符串而創建的,語法如下:

Join(sourcearray[, delimiter])

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

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

二:split函數:這個函數的講解在之前已經講過,不再多說了。

多個字符的合并和字符串按規律的拆分是經常遇到的,如:A-REW-E-RWC-2-RWC 按分隔符"-"拆分成6個字符放在一個數組中;有一組數array(23,45,7,1,76)想用分隔符-連接成一個字符串

上面兩種情況的實現即用到:split(字符串,"分隔符") 拆分字符串。join(數組,"分隔符") 用分隔連接數組的每個元成一個字符串

實例一:

Sub Myst()

Dim arr, myst As String

myst = "A-REW-E-RWC-2-RWC"

arr = Split(myst, "-")

MsgBox arr(0) '顯示數組的第一個數(分隔後的數組最小下标為0,不是1),顯示結果為A

MsgBox Join(arr, ",") '再用","把數組的每個值連接成一個字符串,結果為"A,REW,E,RWC,2,RWC"

End Sub

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

實例二:

Sub MyJoin()

Dim strJoin As String

strJoin = Join(Array("a", "b", "c"), ",")

MsgBox strJoin

End Sub

三: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(數組, 篩選的字符, 是否包含)

實例三:

Sub MyFD() '實例三

arr = Array("ABC", "A", "D", "CA", "ER")

arr1 = VBA.Filter(arr, "A", True)

arr2 = VBA.Filter(arr, "A", False)

MsgBox Join(arr2, ",")

End Sub

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

實例四:查找數組的差集

Sub Filter1()

Dim varArr1 As Variant

Dim varArr2 As Variant

Dim i As Integer

varArr2 = Array(1021, 1023, 1025)

varArr1 = Array(1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028)

For i = 0 To UBound(varArr2)

varArr1 = VBA.Filter(varArr1, varArr2(i), False)

Next i

MsgBox Join(varArr1)

End Sub

注意,filter函數在此是模糊查找,下面代碼将無法返回我們想要的值.

代碼截圖:

vba 數組篩選指定列(VBA中數組的合并與拆分)1

運行結果一:

vba 數組篩選指定列(VBA中數組的合并與拆分)2

運行結果二:

vba 數組篩選指定列(VBA中數組的合并與拆分)3

運行結果三:

vba 數組篩選指定列(VBA中數組的合并與拆分)4

運行結果四:

vba 數組篩選指定列(VBA中數組的合并與拆分)5

今日内容回向:

1 VBA數組的三個函數是什麼?

2 數組篩選時兩個方案是什麼?

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved