之前寫出數組公式已然不易,想要擴展更是難上加難,但是最近更新解決了這個問題,具體我們看一個案例來了解一下! 首先我們還是來看一個基礎問題,如何讓一個內容擴展成指定行數或者列數的數組? 比如我們有一個內容為“A',如何變成3行的內存數組呢?方法有很多! 首先是傳統的方法,可以使用INDEX,構建第二參數數組,比如下面這樣! 當然我們也可以換一個思路,把內容重復后,再拆分成數組!
=TEXTSPLIT(REPT('A'&'|',3),,'|') 這個是否你會發現多出一個空行,也就是最后一個拼接的符號,這個要如何處理呢?要是我們可以截取或者丟棄數組部分內容就好了,過去是不行的,但是現在可以了!
=TAKE(TEXTSPLIT(REPT('A'&'|',3),,'|'),3) TAKE就是字面意思,我們可以從數組頭部(正數),尾部(負數),截取數組部分行數或者列數的大小的數組! 具體語法:TAKE(數組,截取行數,[截取列數])就本案例來說,截取不如直接丟棄最后一個,這個的丟棄對應的就是DROP函數,也是字面意思了!
=DROP(TEXTSPLIT(REPT('A'&'|',3),,'|'),-1) 公式的含義就是丟棄最后一行,跟TAKE相反的意思!從后處理使用負數表述! DROP函數的語法截取如下,和TAKE完全一致,功能正好相反!除了上面,我們還有沒有其他方法可以擴展呢?有沒有直接的擴展方式? 如其名,就是擴展數組用的!根據下面的截圖,翻譯一下就是具體語法:EXPAND(數組,展開行數,[展開列數],[不足部分填充])具體如何使用呢?目前官方給的例子,意義不大,我們還是利用上面的案例看一下! 意思就是把A擴展成3行1列,不足部分使用“A”填充! 當然,我們可不可以指定第二參數就可以擴展,而不用指定第四參數呢?自然是可以的,只是要使用數組的方式! 講了這么多,我們來使用這些新函數,做一個實際案例吧!
=REDUCE(A1:B1,$B$2:$B$4, LAMBDA(x,y,LET(cp,TEXTSPLIT(y,,'、'),r,SEQUENCE(COUNTA(cp)),VSTACK(x,HSTACK(EXPAND(INDEX($A$1:$A$4,ROW(y)),r),cp))) ))
首先,考慮拆分問題,使用最新的TEXTSPLIT函數拆分即可,根據拆分后的數組行數,把對應的組別也擴展到對應的行數大小,然后使用HSTACK水平方向合并到一起然后把每一行處理好的數據,再使用VSTACK合并到依次追加到之前合并好的數組上即可!這里涉及到每行處理,還需要在上次處理的基礎上追加結果,所以我們首先考慮到的函數就是REDUCE 以上我們算是對最新一批函數的綜合應用,具體涉及7個新函數如下: REDUCE、LAMBDA、LET、TEXTSPLIT、SENQUENCE、VSTACK、HSTACK、EXPAND近一年多更新的全部新函數如下:本次更新的大部分我們已經講完!目前來看要三點:①365正版 ②Beta通道 ③ 版本2204+ 應該是分配推送,如果你都滿足,還是沒有,可能再等兩天基本就有了!
|