數字化工具VBA實戰(zhàn)經驗之四:數組及案例
伙伴們,大家好。今天分享數組及案例,僅供參考。我們每天進步一點,夢想更近一步。
思語:千里之行,始于足下。
? ???萬丈高樓平地起。高樓要穩(wěn)如泰山,需要有堅固的地基,需要有一磚一瓦的砌合,需要有鋼筋水泥的凝結,需要有日常持續(xù)的管理。

本文把VBA數組和Excel公式函數的數組進行對照說明。
一、數組的定義
??數組:指一組數據的集合。
二、數組定義的相關說明
??數組元素:指數組里的每個成員。
??一組:指兩個及兩個以上元素,但特殊情況下也可以是一個元素。
??數據類型:VBA中有不同的數據類型,可以是數字型、文本型、日期型、時間型和對象型等。而在Excel公式函數里使用的數組的數據類型一般為數字型、文本型、日期型、時間型等。
??數組劃分:在Office中有VBA數組和Excel公式函數的數組,它們都是數據存儲的不同形式。
??VBA數組存儲在內存中,而Excel公式函數數組可以存儲在內存中,也可以存儲在工作表的單元格里。
? VBA數組可以一維、二維或多維處理數據,而Excel公式函數數組是基于單元格處理數據。
? VBA數組用于處理大數據,而excel公式函數數組用于處理小量數據。
? VBA數組變量名稱作為每個數組元素的共同引用名稱,并通過數組的下標及下標的下界、上界的位置編號引用某個具體數組元素。
? VBA數組的下標:指每個數組元素在數組中的位置編號。一維數組的下標是整數,從0開始,按自然數遞增。比如,定義一個長整型的一維度數組:dim myarray1(5) as long,這個myarray1就是數組變量名稱,該數組的下標范圍為0到5,共計6個元素。
? VBA數組的下界:指數組中元素的最小下標值。數組的下界默認為0。但是可以通過Option Base語句將其設置為1,即:在標準模塊第一個過程之前輸入語句:Option Base 1,那么此時定義的數組元素最小下標值為1。
?提取VBA數組的下界值函數:Lbound(數組變量名稱,數組維數)
?VBA數組的上界:指數組中元素的最大下標值。例如,上述定義的數組myarray1的元素最大下標值為5。
?提取VBA數組的上界值函數:Ubound(數組變量名稱,數組維數)
三、數組的形式
數組的形式可以分為橫向數組、縱向數組和多維數組。
1、橫向數組
??比如,在Excel公式函數參數中輸入橫向數組:{"銷售費用", "管理費用", "研發(fā)費用"}。數組用一對大括號封存,在大括號里的各個數組元素之間使用逗號作為分隔符,如果元素是文本字符串需要使用英文雙引號包裹起來。在Excel中,我們可以理解為行方向的數組。在VBA中使用Array函數:Array("銷售費用", "管理費用", "研發(fā)費用")賦值。
2、縱向數組
? ?比如,Excel公式函數參數中輸入縱向數組:{"銷售費用" ;?"管理費用" ; "研發(fā)費用"}。數組用一對大括號封存,在大括號里的各個數組元素之間使用分號作為分隔符,如果元素是文本字符串需要使用英文雙引號包裹起來。Excel中我們可以理解為列方向的數組。
VBA中使用Array函數:Array("銷售費用", "管理費用", "研發(fā)費用")賦值,使用Application.Transpose函數轉置為縱向數組。Application.Transpose(數組變量名稱)。
3、多維數組
? ?數組可是二維及以上的多維數組。這里舉例二維數組,比如,{100,200,300 ; 400,500,600},?它是一個兩行三列的二維數組,數組用一對大括號封存,在大括號里第一行的橫向數組各個元素之間使用逗號作為分隔符,第二行使用分號作為換行符,緊跟一個橫向數組。

VBA中可直接批量賦值給數組變量名稱。比如,myarray1 = range("A1:C2")

四、數組的注意事項
1、數組的輸入方法
? Excel公式函數中使用數組作為參數進行計算,通常需要在各參數輸入完畢后,同時按下Ctrl+Shift+Enter三鍵結束輸入,并返回計算結果。一般是在Excel 2016及之前版本里,需這樣操作。而在Excel 2019版本開始,直接按下Enter回車鍵就可以完成操作。而在VBA中,按上述舉例直接對數組變量名稱賦值。
2、數組公式與常規(guī)公式的區(qū)別
? Excel中常規(guī)公式是我們日常在一個單元格里輸入的。而數組公式可以在一個單元格里輸入并返回計算結果,也可以先選中與數組維數大小相同的單元格區(qū)域(即:存儲返回結果),然后輸入數組公式完成計算。
? Excel中常規(guī)公式在單元格未做保護的條件下,可以按Delete鍵刪除或直接更改。而數組公式只能在輸入數組公式時的首個單元格刪除,除首個單元格外刪除或更改,會彈出提示:無法更改部分數組。這也說明數組公式可以在一定程度上保護數據。
五、VBA數組案例
??把A1:C2區(qū)域賦給數組myarray1,并把該數組的下界、上界寫入B17:B20相應區(qū)域。編譯代碼并按F8鍵逐語句執(zhí)行后如下圖:

六、Excel公式函數的數組案例
??在下述工作表中求出遠昌財稅的出現(xiàn)次數。在公式編輯欄輸入:=SUM((B7:B14="遠昌財稅")+0)

