久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

微軟一口氣測試14個新函數(shù),,Excel函數(shù)加速向編程語言進化~

 書生的圖書館 2022-04-17


前段時間微軟一口氣測試了14個新函數(shù),其中有些函數(shù)極其重要(本文第3小節(jié)),,較大程度改變了函數(shù)核心數(shù)據(jù)結(jié)構數(shù)組的薄弱性,。函數(shù)獲取數(shù)據(jù)的能力提高了,,解決復雜數(shù)據(jù)查詢問題的能力更是指數(shù)級提升,今天就給大家稍微展開聊一下,。

  1

 文本處理函數(shù)


這次測試的14個新函數(shù)里有三個文本函數(shù):
TEXTSPLIT
TEXTBEFORE
TEXTAFTER

這仨貨,,特別是TextSplit對Excel函數(shù)來說還是很重要的,畢竟字符串拆分是極其常見的基礎問題,。這個函數(shù)可以將字符串按一到多個分隔符拆成一維或二維的內(nèi)存數(shù)組,。

但這函數(shù)本來20年前就該有,微軟硬是拖拖拉拉磨蹭了7個版本才更新——這就好比男足20年后好不容易贏了越南,,你那時問我什么感受?男足贏越南當然是重要的,,但要問我感受嘛,,那我只能說:草,,是一種植物,。


TEXTSPLIT有5個參數(shù),。前倆參數(shù)是必須的,,第1個參數(shù)是源字符串,,第2個參數(shù)是列分隔符,。其它3個參數(shù)依次是行分隔符,、是否忽略空值以及指定缺失值的填充值。

舉點簡單的小栗子,。

圖片

如上圖所示,需要將A列的字符串按分隔符'-'拆分為B:E的數(shù)據(jù),。

B2單元格輸入以下公式向下復制填充即可:

=TEXTSPLIT(A2,'-')

當分隔符有多個時,,第2和3參數(shù)還可以使用數(shù)組形式

如下圖所示的A列數(shù)據(jù),,分隔符既有-又有/,可以使用以下公式拆分,。

=TEXTSPLIT(A2,{'-','/'})

圖片

還可以將一個復雜的字符串按分隔符拆成二維數(shù)組,。

如下圖所示,,A2單元格是一個混合字符串,有多個記錄構成,,每個記錄的結(jié)構均為人名-性別-科目-成績,,不同記錄之間用分號串聯(lián),。

圖片

使用以下函數(shù)可以將A2拆成為二維數(shù)組:

=TEXTSPLIT(A2,'-',';',,'數(shù)據(jù)缺失')

對于源字符串,,公式先用,;拆分為多行,,再用-拆分為多列,,對于缺失值,,例如那個既美麗又知性的姑娘小白沒有成績,,則用第5參數(shù)的指定值'數(shù)據(jù)缺失'填充,。

剩下兩個文本函數(shù)
TEXTBEFORE和TEXTAFTER
顧名思義,分別獲取指定分隔符前和后的數(shù)據(jù),,意義不大,,沒啥好說的,。


  2

 數(shù)組結(jié)構轉(zhuǎn)換函數(shù)


Excel函數(shù)一直缺失結(jié)構轉(zhuǎn)換類函數(shù),,例如,二維數(shù)組轉(zhuǎn)一維,,一維數(shù)據(jù)轉(zhuǎn)二維;之前需要使用OFFSET等函數(shù)操作,,過程復雜效率低下不說,,涉及到內(nèi)存數(shù)組維度轉(zhuǎn)換時,,在不同版本的穩(wěn)定性也很糟糕,。

這次更新了4個新函數(shù),。

TOROWS:將二維數(shù)組轉(zhuǎn)換為一行
TOCOL:將二維數(shù)組轉(zhuǎn)換為一列
WRAPCOLS:將一維數(shù)組按列轉(zhuǎn)換為二維數(shù)組
WRAPROWS:將一維數(shù)組按行轉(zhuǎn)換為二維數(shù)組

以上,舉倆常見的小栗子,。

有一個經(jīng)典的數(shù)據(jù)結(jié)構轉(zhuǎn)換問題,,將多列數(shù)據(jù)轉(zhuǎn)換為一列,。這問題的舊的常規(guī)解法可以查閱【往期教程】,而現(xiàn)在用新函數(shù)一個函數(shù)就可以了:

=TOCOL(A1:C4,1,1)

第1個參數(shù)是數(shù)據(jù)源,,第2個參數(shù)表示忽略空值,第3個參數(shù)表示按列掃描數(shù)據(jù),。

圖片

這個問題延伸一下,,就有了多列數(shù)據(jù)轉(zhuǎn)N列的情況。

如下圖所示,,A:D是數(shù)據(jù)源,有4列N行,,需要轉(zhuǎn)換為F:G所示的2列N行,。

圖片

參考公式如下:

=WRAPROWS(TOCOL(A2:D6,1,0),2

公式先用TOCOL函數(shù)將4列數(shù)據(jù)轉(zhuǎn)換為1列的一維數(shù)組,再用WRAPROW函數(shù)將一維數(shù)組按每2個元素為一行轉(zhuǎn)換為二維數(shù)組,。


  3

 數(shù)組動態(tài)擴展函數(shù)


打個響指,,以上無聊的小東西總算說完了,,這節(jié)說下這波新函數(shù)里最重要的幾個,??次倚⊙凵?,這很有趣圖片,。


2年前微軟剛推出LAMBDA的時候,,國外有大佬說Excel函數(shù)正式進化為編程語言了。那時看還是妄言,,甚至是笑話。畢竟一個編程語言,,不但要有分支和循環(huán)等語句,,還得有數(shù)據(jù)結(jié)構做支撐,,典型如數(shù)組和字典等,。而Excel函數(shù)有什么?那時什么都沒有,。

可能有朋友說有數(shù)組——但函數(shù)的數(shù)組太弱,,連基礎的動態(tài)讀寫及調(diào)整大小的能力都沒有,完全不足以支撐循環(huán)函數(shù)的廣泛應用,。

微軟后來不斷測試推出各種循環(huán)作用的函數(shù):
MAP/REDUCT
SCAN/BYROW等等
這使Excel函數(shù)日益強大的同時,也進一步凸顯它唯一的數(shù)據(jù)結(jié)構——數(shù)組的極度薄弱性,,

攤手,,而這一波更新終于明顯增強了函數(shù)數(shù)組的能力,。擁有這類函數(shù),,搭配變量功能的LET,,循環(huán)語句的REDUCT/MAP/SCAN等,以及自定義過程的LAMBDA,,說Excel加速向編程語言進化就一點都不為過了,。

當你熟練掌握了Excel函數(shù),,后期再學習其它編程語言,,完全可以事半功倍,,少掉很多頭發(fā)——嗯,,是的,,畢竟你已經(jīng)掉過了。

這類函數(shù)一共有7個▼
1,,VSTACK:將多個數(shù)組縱向合并,。
2,,HSTACK:將多個數(shù)組橫向合并,。
3,,TAKE:從數(shù)組的頭或尾截取指定行/列數(shù)
4,,DROP從數(shù)組的頭或尾刪除指定行/列數(shù)
5,,CHOOSEROWS:從二維數(shù)組中選取指定的行數(shù)
6,,CHOOSECOLS:從二維數(shù)組中選取指定的列數(shù)
7,,EXPAND:將數(shù)組擴展指定行/列,,并填入指定值

照例舉幾個簡單的小栗子,。

選取指定行列

有一張數(shù)據(jù)表,,如下圖所示,。

圖片

假設你現(xiàn)在只需要選取班級、姓名和英語三個字段的數(shù)據(jù),,參考函數(shù)如下:

=CHOOSECOLS(A1:E7,{1,2,5})

第1參數(shù)是數(shù)據(jù)源,第2參數(shù)表示選取的列的序列號,。

如果事前并不知道班級/姓名和英語的序列號,,可以將公式修改為以下,,使用MATCH函數(shù)定位相關字段的位置,。

=CHOOSECOLS(A1:E7,MATCH({'班級','姓名','英語'},A1:E1,0))

圖片

合并多個子數(shù)組

將多個子數(shù)組合并是很常見的問題,以前的解決方式需要借助LOOKUP函數(shù)或者字符串結(jié)構,,復雜低效不靈活,這可以參考往期推文【看暈了,,用Excel函數(shù)將多個一維數(shù)組合并成一維數(shù)組】

如下圖所示,需要計算A列和C列兩列人名不重復的名單,。

圖片

E1單元格參考新公式如下:

代碼看不全可以左右拖動...▼

=UNIQUE(VSTACK({'不重復名單'},A2:A7,C2:C8))

又或者將多個工作表的數(shù)據(jù)合并??


圖片

如上圖所示,,有兩張工作表,,名稱分別是一班和二班,,需要將兩表合并成總表↓

圖片

舊函數(shù)的解法極其繁瑣,感興趣的朋友可以參考【往期推文】,,而新函數(shù)在總表的A1單元格輸入以下公式即可:

=VSTACK(一班!A1:C7,二班!A2:C7)

VSTACK可以將多個數(shù)組按垂直方向合并成一個數(shù)組,。和VLOOKUP一樣,,這里的V是vertical,,表示垂直的,、縱向的,。與之相對的還有一個HSTACK,,可以將多個數(shù)組橫向合并成一個數(shù)組,。

=HSTACK(一班!A2:C7,二班!A2:C7)

圖片

綜合小案例

以上都是比較基礎實在的用法,,再給大家舉一個數(shù)組動態(tài)擴展函數(shù)和循環(huán)函數(shù)搭配使用的簡單小案例,。

如下圖所示,,B列是開始的發(fā)票號,,C列是結(jié)束的發(fā)票號,,需要展開如E列所示,。

比如12340-12346,展開后是12340/12341...12346,。

圖片

參考函數(shù)解法如下:

代碼看不全可以左右拖動...▼

=REDUCE({'發(fā)票展開'},B2:B4,LAMBDA(_a,_b,LET(_y,_b+SEQUENCE(VLOOKUP(_b,B:C,2,0)-_b+1)-1,VSTACK(_a,_y))))
REDUCT是累加循環(huán)函數(shù),,源值是常量數(shù)組{'發(fā)票展開'},遍歷范圍是B2:B4,,計算過程是第3參數(shù)的LAMBDA,。

第2行代碼利用SEQUENCE函數(shù)生成遞增序列,再和初始發(fā)票號相加,,返回一個內(nèi)存數(shù)組:
12340,12341,12342,12343,12345,12346
第3行代碼使用VSTACK函數(shù),,將第2行代碼返回的內(nèi)存數(shù)組和REDUCT的源數(shù)組縱向合并,作為新的源數(shù)組,。

如此迭代直至遍歷完成B2:B4區(qū)域的最后一個元素,。


將數(shù)組動態(tài)擴展函數(shù)和REDUCT搭配使用,,工作表函數(shù)就可以有機會像Power Query M函數(shù)的List.Accumulate似的,,變成萬能套路,;如果你擅長M函數(shù),,那么對于該套路的強大應該并不陌生圖片

再舉個小栗子。

圖片

如上圖所示,,A列是混合字符串,,需要從中統(tǒng)計人名及總分,。

這樣的問題,舊的常規(guī)的函數(shù)解法是先用輔助列把數(shù)據(jù)拆分整理,,然后再分類匯總,。而擁有這波新函數(shù),,我們就可以實現(xiàn)編程式函數(shù),,一條公式直接搞定:

=LET(_lst,DROP(REDUCE({''},A2:A11,LAMBDA(_d,_s,VSTACK(_d,INDEX(TEXTSPLIT(_s,{'-',';'}),{1,4})))),1),_nm,CHOOSECOLS(_lst,1),_score,CHOOSECOLS(_lst,2)*1,_unm,UNIQUE(_nm),_rst,MAP(_unm,LAMBDA(_r,SUM(FILTER(_score,_nm=_r)))),VSTACK({'姓名','總分'},HSTACK(_unm,_rst)))

……

正式擁有這些新函數(shù)后,,Excel函數(shù)就可以稱之為編程語言了嗎,?假笑來說,仁者見仁智者見智,,坦白而言,那當然還差…咳,,這事你開心就好,,咱們誰和誰啊,誰都不認識誰不是o(?Д?)っ啥,!

圖片

留一個話題吧,,你期待微軟下一步推出測試哪些新函數(shù)呢?數(shù)組動態(tài)讀寫,?跨工作簿讀取?分組自定義聚合Group,?正則表達式Reg,?還是……不妨留言說說,。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多