當前位置:首頁 > 科技 > 正文

理解Excel中的數組(一)

前言

對很多Excel的初學者來說,“數組”是個令人望而生畏的概念。但是,隻要稍微花一點時間,就會發現數組并不難理解。尤其是,在新版本的Excel中,已經支持動态數組了,就更加有必要了解數組的來龍去脈和它們的使用了。

當然,在Excel中,我們說到數組,一般是指在公式中引用的數組或者返回的數組,而不是VBA中的數組。

數據其實跟區域中的數值沒有“區别”

簡單地說,數組就是一組數據的集合。其中的每個數據一般被稱為數組元素,簡稱元素。

例如:

1,2,3,5,8,11,19

就可以看做一個“數組”。

1,3,5,7,9,11,13

2,4,6,8,10,12,14

也可以看作是一個“數組”。

而下面的數據:

1

3

5

7

9

當然也可以看做一個“數組”。

從中可以看出,數組其實天生就跟Excel的表格比較相配。上面的三種數組實際上跟下圖中的表格區域中的值沒有區别:

所以,我們在理解數組時,在直觀上就可以“當成”Excel中的表格區域來想象。(當然,具體到公式中,兩者還是有一定區别的)。

實際上,如果值存放在單元格區域中,那麼我們就是用:

A1:A5

來引用這些數值。

如果單元格中沒有存放這些數值,就可以使用數組:

1

3

5

7

9

來引用這些數值。

當然,數組中的元素不一定是數字,也可以指文本,日期,邏輯值等數據類型。

數組的維數

數組有一個很重要的概念:維數。

在Excel的公式中,我們接觸到的數組都是一維的或者二維的。

一維數組

所謂一維數組,就是隻有一行的數組或者隻有一列的數組:

隻有一行的數組:

1,2,3,5,8,11,19

隻有一列的數組:

1

3

5

7

9

二維數組

二維數組就是有多行多列的數組。下面就是一個2行7列的二維數組:

1,3,5,7,9,11,13

2,4,6,8,10,12,14

Excel公式中的數組

上面例子中的數組不能直接放在Excel公式中,必須加上一個符号,這樣Excel的計算引擎一眼就能看出後面的内容是數組,就可以進行數組對應的處理了。

這個符号就是:

{}

所有的數組元素都必須在一對大括号中

例如:

{1,3,5,7,9,11,13}

在某些公式中可以直接使用數組:

=SUM({1,3,5,7,9,11,13})

數組中如果有多列,列之間要用英文的逗号:,隔開。

如果數組中有多行,行之間需要使用英文的分号:;隔開。

=SUM({1;3;5;7;9;11;13})

結果跟上面是一樣的:

如果多行多列,就需要同時使用逗号和分号來區分不同的行和不同的列:

{1,2,3;4,5,6;7,8,9}

使用數組(如果Excel版本不支持動态數組)

在不支持動态數組的Excel中使用數組,分為兩種情況:

  1. 參數是數組,結果是一個值(非數組)

  2. 參數是數組,結果是數組。

先來看第一種情況:

  1. 參數是數組,結果是一個值(非數組)

嚴格地說,這種情況不屬于大家經常聽說的“數組公式”,

比如,我們前面的例子:

=SUM({1,3,5,7,9,11,13})

盡管使用了數組,對使用者來說就好像是使用區域一樣,不需要額外的操作。(不用CTRL+SHIFT+ENTER)。

這種情況比較簡單。

2. 參數是數組,結果是數組

這才是真正的數組公式。

例如:

{=IF({0,1},"A","B")}

這就是一個數組公式,輸入的時候,要輸入公式本身(不要輸入大括号):

=IF({0,1},"A","B")

然後按CTRL+SHIFT+ENTER來完成公式的輸入。輸入之後的公式在編輯欄中就自動加上了大括号:

因為輸入的是一個數組(1行兩列),返回的一個跟輸入數組相同維數的數組(1行兩列)。所以,一般應該在Excel中選擇好放置結果的區域:兩個相鄰的單元格,

然後輸入公式:

然後按CTRL+SHIFT+ENTER,完成公式輸入,得到完整的公式結果:

需要再次提醒的是,結果數組跟參數數組一定是相同的維數,上面的例子中,參數數組是

{0,1},

是一行兩列的數組,所以結果也是一行兩列的數組,你隻能選擇同一行上相鄰的兩個單元格來接收數組。

如果公式改一下:

=IF({0;1},"A","B")

參數變成了:

{0;1},

是一個兩行一列的數組,返回結果也是兩行一列的數組,你隻能選擇同一列上相鄰的兩個單元格接收數組:

有的時候數組公式的結果并不一定是個數組。

例如,在這篇文章(原來,VLOOKUP也可以反向查找)中,我們提到了一個VLOOKUP公式:

用這個公式進行反向查找。這個公式的結果隻返回一個值,但是中間過程中的IF公式卻需要返回多個值,因此,仍然是數組公式,需要CTRL+SHIFT+ENTER來完成公式輸入。

還有一個經常遇到的例子就是條件求和(在沒有SUMIF函數之前經常用):

這裡,我們需要求所有>0的數據的合計,可以使用公式:

{=SUM(IF(A2:A9>0,A2:A9,0))}

這裡可以理解為IF函數針對A2:A9做了一個循環,得到了一個中間數組,然後對中間數組進行求和:

用ROW/COLUMN生成數組

當ROW和COLUMN函數中的參數是一個多行或多列的區域時,返回的實際是一個數組。

ROW函數實際返回的是多行1列的數組:

這個結果實際上:

{1;2;3;4;5;6;7;8;9}

COLUMN函數返回的是1行多列的數組:

這個結果實際上:

{1,2,3,4,5,6,7,8,9}

利用這兩個函數,我們可以簡化很多數組公式的寫法。

比如,公式:

{=CHOOSE({1,2,3,4,5,6,7,8,9},"a","b","c","d","e","f","g","h","i")}

可以簡化為:

{=CHOOSE(COLUMN(A:I),"a","b","c","d","e","f","g","h","i")}

提醒一下,這麼使用的時候一定要注意需要的是單行數組還是單列數組。

Excel+Power Query+Power Pivot+Power BI


Power Excel 知識庫 按照以下方式進入知識庫學習 Excel函數 底部菜單:知識庫->Excel函數

自定義函數底部菜單:知識庫->自定義函數

Excel如何做底部菜單:知識庫->Excel如何做

面授培訓底部菜單:培訓學習->面授培訓

也可以在曆史文章中學習Excel,Power Query,Power Pivot,Power BI,Power Automate各種技巧。

你可能想看:

有話要說...

取消
掃碼支持 支付碼