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

分享

MAP函數(shù)用過沒,?

 存入倉庫 2022-08-02 發(fā)布于河北



每天一篇Excel技術圖文
微信公眾號:Excel星球

NO.1641-MAP函數(shù)
作者:看見星光
 B站/微博:Excel星球 

HI,,大家好,我是星光,。

上一期給大家聊了BYROW函數(shù),,末尾留了一個多關鍵詞查詢的案例,當時我們說圖片,,當計算對象是單列多行數(shù)據(jù)時,,用MAP函數(shù)比BYROW函數(shù)更適合。這期就給大家聊一下MAP函數(shù),。

圖片

??點擊圖片閱讀BYROW函數(shù)教程

語法概要

1)基礎語法

以下是MAP的語法格式:

=MAP( 數(shù)組,  數(shù)組或LAMBDA自定義表達式1,  數(shù)組或LAMBDA自定義表達式2,  ……  數(shù)組或LAMBDA自定義表達式n)

第1參數(shù)是數(shù)組,,第2等參數(shù)是數(shù)組或LAMBDA表達式。系統(tǒng)按照從上到下,、從左到右的順序,,遍歷數(shù)組中的每個元素,執(zhí)行LAMBDA表達式,,最后返回和源數(shù)組尺寸相同的結果數(shù)組,。

打個響指,看語法看不出花來,,我們還是舉個簡單的例子,。

圖片

如上圖所示,是一張成績表?,F(xiàn)在,,需要對每個人的語文成績加10分。為什么加10分呢,?聽說是慶祝祖國即將統(tǒng)一了,。

MAP函數(shù)的解法如下:

=MAP(D2:D9,LAMBDA(_m,_m+10)) 

MAP函數(shù)第1參數(shù)是D2:D9,,系統(tǒng)從上到下依次遍歷數(shù)組中的每個元素,也就是D2/D3/D4/...D9,,每個元素執(zhí)行LAMBDA表達式,。

LAMBDA表達式第1參數(shù)屬于自定義名稱(_m),指向第1個數(shù)組中每個被遍歷的元素,,第2參數(shù)是計算方式(_m+10),,在原值的基礎上加10。

公式返回結果如下圖所示,。

圖片

……

2)遍歷順序

當MAP函數(shù)的數(shù)組參數(shù)是多行多列時,,會按照從上到下、從左到右的順序遍歷,。

還是舉個簡單例子,。以同樣的數(shù)據(jù)為例,不但語文要加10分,,數(shù)學也要加10分,。嗯,快樂總是相似的圖片,。

MAP函數(shù)解法如下:

=MAP(D2:E9,LAMBDA(_m,_m+10))

MAP函數(shù)第1參數(shù)是D2:E9,,8行2列。系統(tǒng)按照從上到下,、從左到右的順序遍歷該數(shù)組,,也就是D2/E2/D3/E3……依次執(zhí)行LAMBDA表達式,每個元素+10,,返回一個和源數(shù)組尺寸相等的結果數(shù)組,,8行2列,如下圖所示:

圖片

……

3)多數(shù)組參數(shù)

MAP函數(shù)支持多個數(shù)組作為參數(shù),。

例如,,需要計算每個人的成績總分,MAP函數(shù)解法如下:

=MAP(D2:D9,E2:E9,LAMBDA(_a,_b,_a+_b)) 

MAP函數(shù)第1參數(shù)是源數(shù)組1:D2:D9,,第2參數(shù)是源數(shù)組2:E2:E9,;第3參數(shù)是LAMBDA表達式。

LAMBDA第1個參數(shù)是自定義名稱(_a)指向源數(shù)組1,,第2個自定義名稱(_b)指向源數(shù)組2。系統(tǒng)按順序遍歷源數(shù)組中的每個元素,,_a依次指向D2/D3/..D9,。_b依次指向E2/E3/..D9,兩者依次相加即為每個人的成績總分,。

從這個計算規(guī)則中,,你就可以發(fā)現(xiàn),,當數(shù)組有多個時,它們的尺寸大小必須一致,,不然按照數(shù)組運算規(guī)則,,會導致配對元素缺失,進而產(chǎn)生錯誤值,。

圖片

……

4)保留引用特性

和BYROW函數(shù)一樣,,但源數(shù)組為引用時,MAP也會保留引用的特性,。攤手,,如果你忘記了什么是引用,最好是重新看下新手教程里的什么是Excel數(shù)據(jù)類型章節(jié),。

舉個簡單的例子,。

圖片

如上圖所示,需要在G列用動態(tài)數(shù)組的形式,,統(tǒng)計每個班級累加出現(xiàn)的次數(shù),。

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

=MAP(A2:A9,LAMBDA(_m,COUNTIF(A1:_m,_m)))

MAP第1參數(shù)是引用性質(zhì)的數(shù)組A2:A9,系統(tǒng)遍歷該數(shù)組每個元素,,執(zhí)行LAMBDA表達式,。_m指向源數(shù)組被遍歷的元素,比如A2,,COUNTIF函數(shù)第1參數(shù)是A1:_m,,表示統(tǒng)計范圍,比如A1:A2,,在這個范圍中統(tǒng)計A2出現(xiàn)的次數(shù),。下一個遍歷元素為A3,_m指向A3,,COUNTIF在A1:A3中統(tǒng)計A3出現(xiàn)的次數(shù)……其余以此類推,。

實戰(zhàn)案例

坦白但不露胸說,以上案例,,都是簡單的,,只是為了表達MAP函數(shù)的運算特點,很明顯,,它們并非MAP不可,。MAP函數(shù)最常用的場景還是將計算結果作為內(nèi)存數(shù)組的形式,傳遞給其它函數(shù),。換句話說,,它只是一個計算過程,而非最終結果,。

再舉兩個例子,,這兩例子雖然實際工作中不常見,,但計算過程比較典型。更多實用的案例,,可以參考我們的100道練習題系列,。 

1)字符串篩選、拆分與合并

圖片

如上圖所示,,A列的數(shù)據(jù)混合了班級,、姓名和性別等數(shù)據(jù),需要從中獲取男性的名單,,并合并成一個字符串,。

參考解法如下:

=TEXTJOIN('-',1,  MAP(A2:A9,    LAMBDA(_m,      IF(RIGHT(_m)='男',        INDEX(TEXTSPLIT(_m,'-'),2),       '')     )   ) ) 

MAP函數(shù)遍歷A2:A9區(qū)域,如果最右邊的字符不為男,,則返回假空,,否則使用TEXTSPLIT函數(shù)按分隔符'-'將其拆分,再使用INDEX函數(shù)取出姓名,。

圖片

2)字符串拆分與內(nèi)部計數(shù)

如下圖所示,,A2:A8單元格內(nèi)存在多個人名,不同人名之間使用分隔符'-'相連,。

圖片

現(xiàn)在需要統(tǒng)計每個單元格內(nèi)部每個人名累加出現(xiàn)的次數(shù),,模擬結果如下:

圖片

MAP函數(shù)參考解法如下,B2單元格輸入以下公式向下復制填充,。

公式看不全可以左右拖動..

=LET( _a,TEXTSPLIT(A2,'-'), _b,SEQUENCE(1,COUNTA(_a)), TEXTJOIN('-',1, MAP(_a,_b, LAMBDA(_x,_y, _x&COUNT(0/((_a=_x)*(_b<=_y)))&'次')    )  ))

第2行代碼使用TEXTSPLIT函數(shù)將A2單元格按分隔符'-'拆分,,并賦值變量_a。

{'看見星光','二肥','超人','看見星光','看見星光'} 

第3行代碼統(tǒng)計數(shù)組_a元素的個數(shù),,生成一個遞增水平序列,,賦值變量_b。

{1,2,3,4,5}

這個時候,,我們就可以假設,,得到了一個虛擬的二維數(shù)組,如下圖所示:

圖片

然后,,我們使用MAP函數(shù),,遍歷這個虛擬數(shù)組。

MAP函數(shù)第1參數(shù)為_a,,為每個人名元素,,第2參數(shù)_b,為水平序列,。在LAMBDA表達式中,,使用COUNT函數(shù)統(tǒng)計所有人名等于當前人名,并且所有序列小于等于當前序列的個數(shù),,也就是每個人名累加出現(xiàn)的次數(shù),。

最后使用TEXTJOIN函數(shù)將結果合并即可。

……

當我們使用了顯性遍歷的函數(shù),,諸如MAP/BYROW/SCAN/REDUCE等時,,最好使用動態(tài)數(shù)組的形式,一次性返回全部結果,,這可以避免反復調(diào)取單元格對象到內(nèi)存中,,以至于嚴重拖累計算速度——這也是我們一直說的,如果WPS不支持動態(tài)數(shù)組,,則引入Excel新函數(shù)體系無意義,,因為它壓根帶不起這批函數(shù)的計算速度。

以上述問題為例,,如果使用一條函數(shù)公式,,返回B列全部計算結果,可以在外部嵌套一個REDUCE函數(shù),。在B1單元格輸入以下公式即可:

=REDUCE('數(shù)據(jù)',A2:A8,LAMBDA(_p,_v,  LET(    _a,TEXTSPLIT(_v,'-'),    _b,SEQUENCE(1,COUNTA(_a)),    _c,TEXTJOIN('-',,      MAP(_a,_b,LAMBDA(_x,_y,        _x&COUNT(0/((_a=_x)*(_b<=_y)))&'次')      )),    VSTACK(_p,_c)  )))
圖片

……

攤手,,今天給大家分享的內(nèi)容就這樣吧,有啥問題照例可以在VIP會員群中提問交流↓↓ 揮揮手,,關于REDUCE函數(shù)的講解,,咱們以后的推文中再見。

需要系統(tǒng)學習Excel,,卻找不到優(yōu)質(zhì)教程,?學習Excel的過程中遇到疑難問題,卻找不到人及時作出解答,?加入我的付費社群,,與4500+學員一起,同微軟最有價值專家(MVP)全面精進表格之道??

??

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多