EXCEL VBA——陣列,使用陣列提升程式效率
陣列的存在價值就是讓程式碼提速。
陣列和非陣列的差異只在於資料的儲存和讀取方式不同,雖然操作這些資料的方法或者函式並沒有不同,但是儲存與讀取上的差異卻使VBA程式碼在處理資料時實現了質的飛躍。在完成相同工作時,使用陣列比非陣列的效率有可能提升幾倍乃至幾十倍,陣列對於VBA而言舉足輕重。
1、陣列的定義:
陣列就是連續可索引的具有相同內在資料型別的元素的集合,陣列中的每一元素具有唯一索引號。簡單而言,陣列就是一組相同型別的資料集合。
陣列支援一到六十維,不過常用的是一維陣列和二維陣列。
通常可以藉助區域來理解陣列,因為陣列存在於記憶體中,顯得虛無縹緲,而區域則比較形象化。
事實上,陣列和區域之間是相互依存的關係,工作中會經常將區域中的資料匯出到陣列中,當在陣列中處理完畢後,又需要將資料從陣列匯出到區域中。
2、陣列的特點:
(1)包含多個元素
(2)讀取速度快
計算機在讀取資料時,軟盤 > 光碟 > U盤 > 硬碟 > 記憶體,從軟盤中讀取的速度最慢,最快的是記憶體。而讀取EXCEL工作表的單元格中的資料時相當於硬碟級速度,讀取陣列中的資料則相當於記憶體級速度,所以陣列的運算速度快於區域的運算速度。
在使用陣列時,通常將區域中的值讀取到記憶體中,然後再針對陣列執行各種運算,運算完畢後再根據需求將結果寫入相應的區域或者單元格中。
換言之,使用陣列就是儘量減少讀取單元格的次數,替之以讀取記憶體,從而提高程式碼執行效率。
(3)不能常駐記憶體
記憶體中的資料生命週期不長,不像工作表那樣可以長期保留資料。
VBA中陣列的載體其實是指陣列變數或集合(Collection),它們都會在結束過程或者關閉工作簿後自動消失,所以陣列僅用於臨時儲存資料,在記憶體中處理資料後需要再將資料匯出到區域中。資料無法長期駐留於陣列中。