天天看點

71 “動态數組”用法詳解(六) -行列累加

作者:古哥計劃

今天繼續分享動态數組專屬函數系列行列數組函數系列之行列的的累計函數,昨天的TOCOL函數與TOROW函數相當于批量的數組區合并在一列或一行,如果是多行或者多列的合并就需要用到今天分享的兩個專屬函數:VSTACK 和 HSTACK函數;

71 “動态數組”用法詳解(六) -行列累加

VSTACK函數

這個函數的定義為:按順序垂直方向追加數組,以傳回更大的數組,也可以了解為“按列方向累加,一層一層疊加”,如下圖所示,分别錄入公式:

=VSTACK(B3:B6,D4:D6),單列合并

=VSTACK(I3:J6,L4:M6) ,多行多列合并

71 “動态數組”用法詳解(六) -行列累加

HSTACK函數

這個函數的定義為:按順序水準方向追加數組,以傳回更大的數組,也可以了解為“按行方向累加”,如下圖所示,分别錄入公式:

=HSTACK(B3:B6,E3:E6),單列的水準方向合并;

=HSTACK(B10:C13,E10:F13) 多行多列的水準方向合并;

71 “動态數組”用法詳解(六) -行列累加

案例1:多表合并

如圖所示,這是某個工廠的生産日報,是按天填寫的,每天一個頁面,每天生産型号不一樣,行數也可能不一樣,一個月下來就是好幾十個頁面的資訊,如果需要按月彙總的時候,就涉及到多表合并,不合并的話,需要一張一張頁面打開,手動合并,非常麻煩。

71 “動态數組”用法詳解(六) -行列累加

此時用VSTACK配合篩選函數和選擇函數可以完美解決;因為VSTACK的功能就是按垂直方向累加數組,隻需要把每個頁面的區域按VSTACK的标準格式參數錄入進行去就可以快速合并了。

錄入函數:=VSTACK('1日:9日'!B3:D12),這是VSTACK函數多表合并的高效寫法:用“'1日:9日'!”這樣的格式代表9個工作表,公式的釋義就是,這9張表中的B3:D12一并合并成一個垂直方向的報表。

因為不同的生日期,任務量也不一樣,是以需要預留大一點的範圍,這樣才能確定所有工作表頁面的資訊都可以合并到一個方向。同時如果預留了這個範圍,合并後就會顯示0,代表沒有錄入資訊的單元格。

再配合下面的函數過濾0,就得到 多表合并的結果。

=LET(A,VSTACK('1日:9日'!B3:D12),FILTER(A,CHOOSECOLS(A,1)<>0))

完成後,整體的效果如下:

71 “動态數組”用法詳解(六) -行列累加

案例2:加标題

上圖的案例中,雖然把多标的資料合并過來了,但還是缺少标題,繼續利用VSTACK函數的特性,把标題加上,錄入公式:

=VSTACK({"日期","型号","數量"},LET(A,VSTACK('1日:9日'!B3:D12),FILTER(A,CHOOSECOLS(A,1)<>0)))

類似這樣的寫法{"日期","型号","數量"},會生成一個水準的數組,因為是用逗号分開的。

71 “動态數組”用法詳解(六) -行列累加

是以,VSTACK可以為數組加上标題,隻要符号累加,方向一緻就可以了;

案例3:多區域的公式合并

有時候在分析資料的時候,是分别用多個公式寫的,每寫一個就會占用Excel的一定區域,如果是多個公式寫的不同區域的公式,在錄入的時候,就需要在多個區域更新公式。

71 “動态數組”用法詳解(六) -行列累加

此時,為了錄入的高效,古老師會把三個公式更新到一個單元格,這樣的好處就是隻需要更新這一個公式,結果就全部出來了,而且還是動态的。我們把公式更新成如下:

=LET(A,DROP(UNIQUE(B:B),2),VSTACK(HSTACK(B2,D2),HSTACK(A,SUMIFS(D:D,B:B,A))))

得到如下圖格式

71 “動态數組”用法詳解(六) -行列累加
71 “動态數組”用法詳解(六) -行列累加

我是古哥:

從事制造行業18年,在企業營運、供應鍊管理、智能制造系統等方面具有豐富的實戰經驗。企業智能化,柔性化計劃營運管理專家,擅長通過企業流程優化規範,企業管理、導入計劃營運提升企業效率;對提高企業準時交貨率,降低企業庫存,輸出智能制造人才有豐富的經驗。學習PMC生産計劃,關注古哥計劃!