今天,我們來探討一下Excel中的'動態數組'功能,我們把這個詞拆開去理解,數組大家應該很非常熟悉,可以簡單的理解為一組值的集合,那動態簡單的可以理解為可變的。那動態數組的意思就是可以返回可變化大小的數組。 了解了這個概念后,我們要區分下版本,在早期的版本例如Excel2003、2007至2019.這些我們經常統稱為低版本。在這些舊版本中,Excel并沒有動態數組的概念。因為舊版本的數組公式始終返回固定的大小,簡單來說,不管你的公式返回了多少個值,是一維數組還是還是多維,他只會返回在一個單元格中,只顯示數組的第一個值(數組左上角第一個)。你可能聽過ctrl shift Enter 。隨著版本的升級,在Excel2021 、365,甚至現在流行的國產WPS,都具備動態數組溢出。溢出的意思就是說你返回的結果是一個1列5行的一維數組,那它會自動擴展到其他單元格中,再也不用像以前一樣去按F9看公式的計算過程。 一、溢出效果 讓我們直觀地體驗一下Excel中的動態數組功能,特別是它的“溢出”效果,我們只需要在一個單元格中輸入公式,使用UNIQUE去除重復值,他會溢出當前單元格,得到一個數組。這里我寫完公式直接按回車,并不需要使用上文提到的三建,當鼠標選擇溢出的單元格時,會自動有一個藍色的邊框。當點擊其他位置的時候,外邊框消失。如果你想刪除這個溢出的數組,你只需要刪除寫公式的單元格內容即可,刪除其他的單元格溢出的結果是無法刪除的。 二、溢出報錯 我們繼續探討使用UNIQUE函數去除重復值的動態數組案例,假如我在E4單元格隨便輸入一個內容。剛剛的公式=UNIQUE(C3:C8),返回是是紅色的溢出結果,如果這時候有一個內容吧我們的結果擋住,那這時候函數就無法得到最終的結果了。就會報錯#溢出(圖1),在WPS中報錯#SPILL!(圖2)。那我們如何解決這個錯誤,我們只需要把擋住我們結果的內容刪掉即可,或者說,你把公式復制粘貼到沒有擋著的地方。 三、@ @是絕對交集運算符。@是出現隱式交叉的位置。隱式交集就是將多個值減少為單個值。如果是單個值,那沒什么可說的,就是返回本身,如果是一個區域,返回的是與公式相同的行或者列上的單元格值。如果是數組返回左上角第一個值。聽著有點深奧,我們看下案例就知道了。圖3我們輸入@F3:F7 ,那當前F3所在的行是第三行,所以的區域是C列,那絕對交集的結果自然是交叉的悟空單元格。圖4我們選擇的是一行C7:D7,那就是第7行與當前公式單元格C列的交叉,結果就是貂蟬。以上兩個是一個區域,那如果是一個數組直接返回左上角第一個,如圖5。對區域降序,排序完成取數組的左上角。就是最高分。 四、# 當我們在Excel中使用輔助列來處理數據時,有時會直接引用一個公式返回的內存數組。讓我們通過一個簡單的例子來理解這一概念,假如我們把成績批量+5分,形成一個輔助列,這時候我們再用sum求和,我們選擇成績區域時,這時候引用的區域并不是F3:F7,而是F3#,這個#的意思就是當我們寫內存數組的左上角單元格引用,在加個#他就會自動識別這個內存數組的區域大小。當我們初學函數的時候,我們可能會拆解復雜的公式,單獨展示某部分公式的返回結果,以便更好地理解公式的工作原理。借用輔助列的形式 ,那就會使用到#,或者可以在公示中看到#。如果后續你函數嵌套非常熟練,無需輔助列,那自然也不會用到#。 |
|