大家好,我們今日繼續講解VBA代碼解決方案的第61講內容:在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法。在上一講中我們講了使用數組函數將單元格中的文本進行分隔後寫入到工作表中的方法,那麼問題來了,如果文本中含有大量的重複值,在寫入時也會將重複值寫入到工作表中,此時,如果我們要剔除重複值,該怎麼辦?用VBA的方法該如何做到呢?我在這講和下一講中將解答這個問題,並提供給讀者一個可以測試的實例。今日先講這個內容要用到的知識點。
一 :Filter函數:這個函數返回一個下標從零開始的數組,該數組包含基於指定篩選條件的一個字符串數組的子集,語法如下:
Filter(sourcesrray, match[, include[, compare]])
參數
a) sourcesrray是必需的,要執行搜索的一維字符串數組。
b) match是必需的,要搜索的字符串。
c) include是可選的,Boolean值,表示返回子串是否包含match字符串。如果參數include是True,Filter函數返回的是包含match參數子字符串的數組子集。如果參數include是False,Filter函數返回的是不包含match參數子字符串的數組子集。
d) compare是可選的,所使用的字符串比較類型。
二:ReDim語句,這個語句在過程級別中使用,用於為動態數組變量重新分配存儲空間,語法如下:
ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]]
參數
a) Preserve是可選的,關鍵字,當改變原有數組最末維的大小時,使用此關鍵字可以保持數組中原來的數據。
b) varname是必需的,變量的名稱。
c) subscripts是必需的,數組變量的維數,最多可以定義 60 維的多維數組,使用下面的語法;[lower To] upper [,[lower To] upper]
講到這裡,有的人會提出這樣的問題,什麼是過程呢?有興趣的朋友可以看我之前寫的一篇文章:什麼是宏?什麼是過程?這裡定義更為精確的給出:那麼什麼是過程呢?就是將輸入轉化為輸出的一組活動。在VBA中過程兩種一是Sub過程和Function函數過程。也就是說每組開始為SUB的活動都是一個過程,或者說每組開始為Function的活動也都是一個過程。ReDim語句就是在這個級別使用語句。
今日內容回向:
1: Filter函數的作用是什麼?
2:ReDim語句的作用是什麼?
3 什麼是過程?