1.Excel中的數(shù)組
數(shù)組(array,繁體版稱作陣列),是由數(shù)據(jù)元素組成的集合,數(shù)據(jù)無素可以是數(shù)值文本日期邏輯錯誤值等。數(shù)據(jù)元素以行和列的形式組織起來,構(gòu)成一個數(shù)據(jù)矩陣。
在EXCEL中,根據(jù)構(gòu)成元素的不同,可以把數(shù)組分為常量數(shù)組和單元格區(qū)域數(shù)組。
1.1.常量數(shù)組
常量數(shù)組可以同時包含多種數(shù)據(jù)類型。它用{}將構(gòu)成數(shù)組的常量括起來,行中的元素用逗號“,”分隔,行之間用分號“;”分隔。數(shù)組常量不能包含其他數(shù)組、公式或函數(shù)。當(dāng)輸入如下所示的公式時,Excel 將顯示警告動態(tài):{12A1:D4} 或 {12SUM(Q2:Z8)}。另外,數(shù)值不能包含百分號、貨幣符號、逗號或圓括號。
例如,{2"greensky"TRUE#N/A }是一個1行4列的常量數(shù)組,而{123;456}則為一個2行3列的常量數(shù)組。
1.2.單元格區(qū)域數(shù)組
單元格區(qū)域數(shù)組則是通過對一組連續(xù)的單元格區(qū)域進(jìn)行引用而得到的數(shù)組。在數(shù)組公式中{A1:B4}是一個4行2列的單元格區(qū)域數(shù)組。
1.3.Excel數(shù)組的維數(shù)
數(shù)組作為數(shù)據(jù)的組織形式本身可以是多維的,而且眾多編程都支持多維數(shù)組,但是Excel的公式中最高只支持2維數(shù)組(也就是行列構(gòu)成的數(shù)組)。關(guān)于這個結(jié)論,在網(wǎng)絡(luò)搜索不到明確的答案,做這個結(jié)論基于以下兩點:
Excel不支持形如={{…}{…}}或={{…};{…}}的書寫格式,所以無法表示3維或多維數(shù)組。在Excel中提供對數(shù)組引用的函數(shù)為index(),它的格式為index(arrayrow_numcolumn_num),它只有行列兩個參數(shù),而沒有引用高于2維數(shù)組的參數(shù)。index函數(shù)也有這樣的格式index(referencerow_numcolumn_numarea_num),它提供了第三個引用參數(shù),是不是說明Excel提供了對3維數(shù)組的引用呢?答案是否定的,reference可以使用多個區(qū)域(區(qū)域之間有逗號隔開)構(gòu)成的參數(shù),第三個參數(shù)area_num是用于指定reference中第幾個區(qū)域的,如INDEX((A1:C6A8:C11)112)中第三個參數(shù)只是指定區(qū)域A8:C11而已。
Excel VBA支持多維數(shù)組。
1.4.數(shù)組的引用
在運(yùn)算過程中,可能需要引用數(shù)組中的某一個元素、某一行或某一列。上面介紹元素、行、列的引用技巧。
元素的引用:對于1維數(shù)組index(array c),對于2維數(shù)組index(array r c)。其中r表示第幾行,c表示第幾列,一般為正整數(shù)。
當(dāng)r為小數(shù)時,會舍棄小數(shù)點后的部公(非四舍五入),如index(array 1.2 2.9)等同于index(array 1 2)。編程語言一般默認(rèn)以截取的方式處理小數(shù)轉(zhuǎn)整數(shù)的操作,這樣可以提高效率,Excel做這樣的處理也是在意料之內(nèi)的。
行引用index(array r 0)返回第r行數(shù)據(jù)構(gòu)成的數(shù)組。
列引用Index(array 0 c)返回第c列數(shù)據(jù)構(gòu)成的數(shù)組。
特別的,index(array 0 0)將返回整個2維數(shù)組。而index(index(array r 0)c)、index(index(array 0 c) r)和index(array r c)相同,都可以返回第r行第c列的元素。