2021-05-12 14:32:11
知道這些Excel陣列概念和運算規則,陣列公式就豁然開朗了
許多人看見公式中出現「陣列」就想繞道,覺得象天書。但是,只要有計算的地方,你就繞不開它,況且它也沒你想的那麼晦澀難懂,只要瞭解了下面的基本知識,大部分陣列公式就迎刃而解了。
顧名思義,「陣列」就是一組資料的集合,這些資料可以是數字、文字、日期、邏輯值等各種類型。按照陣列的存在形式,可以分為三類:
1、常量陣列
常量陣列一般是在公式中直接鍵入並且用一個大括號把它們括起來。
單元格F2中鍵入的「={10,20;15,25;20,30;25,35;30,40}」是一個常量陣列公式,其中「{10,20;15,25;20,30;25,35;30,40}」就是一個常量陣列,陣列中的「,」是同一行資料的分隔符,「;」是換行符,所以這是一個五行兩列的二維常量陣列。
插播一下,一維陣列指的是隻有單行或者單列的陣列,二維陣列指的是有多行和多列的陣列,Excel公式中一般只會用到這兩種維度的陣列。
除了可以在公式中直接鍵入,也可以用名稱儲存常量陣列。點選「公式」選項卡,在「名稱管理器」對話方塊中「新建」一個「分配量」的名稱,「引用位置」鍵入「={10,20;15,25;20,30;25,35;30,40}」。叫作「分配量」的一個常量陣列就定義好了。
需要時可以在公式中直接引用,譬如選擇單元格區域E2:F6,鍵入公式「=分配量」,同時按下Ctrl+Shift和Enter組合鍵確認(公式兩側的大括號是陣列公式的標記以及陣列公式的確認,後面再介紹),常量陣列的數值便填充相應單元格。
2、區域陣列
這個應該是我們最常見的也是我們經常用到的,區域陣列即存在工作表單元格區域的一系列資料,公式通過對單元格區域的引用動態呼叫這些資料。
公式「=SUM(C2:C6*D2:D6)」中就引用了兩個一維區域陣列,分別為「C2:C6」和「D2:D6」,不需要大括號,用冒號「:」引用即可。
3、記憶體陣列
所謂記憶體陣列即由公式生成臨時存在記憶體中,且可以巢狀在公式中參與其它計算的系列資料。
還是樓上那個例子,選中「C2:C6*D2:D6」然後按下快捷鍵F9,可以看見「C2:C6*D2:D6」計算之後生成了一個新的陣列「{500;1200;2100;3200;4500}」,之後又參與SUM計算,這個通過檢視運算步驟檢視到的陣列就可以算作一個記憶體陣列。
瞭解了陣列分類,我們再來看看陣列的運算方式及規則。
1、整體運算
陣列中的資料不需要分別參與外部運算,而是作為一個整體參與某項計算。
單元格B7的公式「=SUM(B2:B6)」引用了區域陣列B2:B6,並運用SUM()函數對陣列中的資料進行相加的計算,最後得出一個單個數據的結果。
2、多項計算
所引用的陣列參與了多項計算的公式才算得上真正意義上的陣列公式。所謂多項計算是指陣列中的每項資料都分別與另一個數組的資料進行運算,多項計算的直接結果一般也是陣列而非一個單一資料。
又用到之前的例子,公式「=SUM(B2:B6*C2:C6)」就是先進行兩個陣列的多項計算,它們的計算結果是一個記憶體陣列「{500;1200;2100;3200;4500}」,再由SUM()函數對這個記憶體陣列進行整體運算得出最後結果「11500」。
3、陣列多項計算的規則
陣列的多項計算實質是兩個陣列對應的資料即相同行相同列位置的資料進行加減乘除或者邏輯等運算得出一個新資料從而生成一個新的陣列。
那麼如果進行運算的陣列行列數不相同會怎樣呢?以下幾種情況仍然可以正常運算:
-單個數據和陣列進行多項運算,則單個數據和陣列中每項資料分別進行計算。
-一維單行陣列和二維陣列進行多項運算,其中一維陣列的列數和二維陣列列數相同,則一維陣列單行資料與二維陣列同列的所有資料分別進行計算。
-一維單列陣列和二維陣列進行多項運算,其中一維陣列的行數和二維陣列行數相同,則一維陣列單列資料與二維陣列同行的所有資料分別進行計算。
所以,陣列的多項運算實質還是行列相同的陣列在進行對應資料的運算,以上幾種情況其實是「陣列1」自身複製將行列數擴充至與「陣列2」一致。
如果是行列數均不一致的兩個陣列或者行列某一項不一致的兩個二維陣列進行多項運算,陣列同樣會先自動擴充,但是因為本身有多行或者多列,系統在擴充需要自身複製時不知作何選擇,就只能用錯誤值填充,以至於結果也會報錯。其實這個也很好理解,當只有一組資料可供複製時,直接複製即可,但是當有N組不分伯仲的資料放在你面前,你也不知作何選擇。
最後我們來看看有多項運算的陣列公式與一般公式有哪些不同之處。
1、確認方式不同
這個非常重要!!!陣列公式完成後需要同時按下Ctrl+Shift和Enter三個組合鍵確認,否則公式會出現錯誤計算或者報錯。組合鍵確認的陣列公式的兩側會自動加上一個大括號,這是陣列公式的標記,編輯時大括號會消失,編輯結束之後,仍然要再次三鍵同時按下確認。當然,如果不小心忘記三鍵確認而是直接Enter鍵確認導致出現錯誤,也不用重寫公式,把游標重新移到公式的編輯欄,按下三鍵確認即可。
不要問我為什麼,系統就是這樣規定的。也不要以為自動生成的大括號還有什麼其它功能,就是個標記,啥其它作用也沒有。
2、陣列公式返回值的顯示
除了在計算過程中生成記憶體陣列,陣列公式最終返回結果也經常是陣列,如果在一個單元格顯示,則只能顯示陣列的首個數據。所以,你可以根據需求選擇多單元格顯示。
首先選取單元格區域G2:H6,注意選取區域的大小必須與公式返回的陣列行列數一致,然後鍵入公式「=C2:C6*E2:F6」,最後Ctrl+Shift和Enter三鍵一起確認,所選區域10個單元格便同時填充了一模一樣的陣列公式,這樣創建的公式也叫作「多單元格陣列公式」,雖然單元格的公式一模一樣,但不同單元格會按照位置顯示陣列相應的資料,創建完成後,任何單元格不能單獨修改,必須同時選中編輯,否則會報錯。
陣列的基本知識就介紹到這裡,有沒有豁然開朗的感覺!
相關文章