天天看點

73 “動态數組”用法詳解(八) -選擇行列CHOOSECOLS函數

作者:古哥計劃

今天繼續分享動态數組專屬函數系列行列數組函數系列之選擇行列。選擇行列這個函數原來沒有發現他們的特殊之處,一直到有一天需要把正常公式更改為動态數組後,才發現這個函數的優秀之處。

老規矩,還是看文法,再看案例和使用場景。

73 “動态數組”用法詳解(八) -選擇行列CHOOSECOLS函數

CHOOSECOLS函數

函數的定義為:包含要在新數組中傳回的列的數組;

函數的文法:=CHOOSECOLS(array,col_num1,[col_num2],…)

通俗的說法:選中多列後,錄入對應的列号,就傳回對應的列。

分别錄入以下函數就可以很直覺的知道這個函數的基本用法了。

B9=CHOOSECOLS(B2:E7,1),選擇第一列;

D9=CHOOSECOLS(B2:E7,2,4),選擇第二列和第四列;

G2=CHOOSECOLS(B2:E7,{1,3,4})選擇多列的不同寫法,這裡注意用的大刮号的寫法;

73 “動态數組”用法詳解(八) -選擇行列CHOOSECOLS函數

案例1:資料自動整理

場景;有時候從ERP導出的資料會非常多列,有很多列都是生産計劃員不需要的,再或者是自己模組化建立好的标準,别人發過來的資料,行列又不一樣了,這樣複制資料的時候就會錯列,無法完美對齊。

如下圖,列數非常多,需要的資料有的在第2列,有的在第6列,還有的可能在第8列,需要快速整理,簡化報表。

73 “動态數組”用法詳解(八) -選擇行列CHOOSECOLS函數

對于以上的資料,用到選擇列函數就非常簡單了,隻需要知道對應的列号,就可以快速選擇了,先确定以下基本表對的列号:

{"下單日期","任務号","裝配件","任務狀态","機關","任務數量","完工數量","生産部門","評審交期"},這個表頭對應的列号可以人工數,也可以用MATCH函數去判斷,錄入函數

=MATCH(A1:I1,'1.複制離散任務'!1:1,0),得到一個數字數組:{2,9,12,10,5,14,15,16,7},這個就是上面對應源資料的列号,隻需要放到選擇列号的第二參數就可以了,錄入函數

=CHOOSECOLS('1.複制離散任務'!A2:R30000,MATCH(A1:I1,'1.複制離散任務'!1:1,0)),就可以得到标準化報表的結果。

73 “動态數組”用法詳解(八) -選擇行列CHOOSECOLS函數

上面的資料會有問題,就是範圍選擇比較大的情況,下面會出現0,如何把0過濾掉呢?

案例2:配合篩選函數過濾無效資料

場景:有時候模組化的時候,因為源資料是變量,是以一般會預留足夠多的行以防止資料過大,超出原先設定的引用範圍(FILTER函數參數選擇整列A:A,模組化的時候,資料運算量非常大,會非常卡)。

當設定的範圍過大,資料不哆的時候,沒有資料的就會顯示為0,造成資料不是最佳的。此時選擇函數加上篩選函數就非常好的完成這個問題了。

為了讓公式簡單一點,先用LET函數把剛剛選擇函數的結果設定為A,A代表剛才的結果。

CHOOSECOLS(A,1)<>0,表示選擇A的第1列中不等于0作為FILTER函數的條件,錄入函數FILTER(A,CHOOSECOLS(A,1)<>0),就把0的篩選出去了,最後合并公式:

=LET(A,CHOOSECOLS('1.複制離散任務'!A2:R30000,MATCH(A1:I1,'1.複制離散任務'!1:1,0)),FILTER(A,CHOOSECOLS(A,1)<>0))

73 “動态數組”用法詳解(八) -選擇行列CHOOSECOLS函數
73 “動态數組”用法詳解(八) -選擇行列CHOOSECOLS函數

我是古哥:

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