九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
MAP函數(shù)用過沒?



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

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

HI,大家好,我是星光。

上一期給大家聊了BYROW函數(shù),末尾留了一個多關(guān)鍵詞查詢的案例,當(dāng)時我們說

,當(dāng)計(jì)算對象是單列多行數(shù)據(jù)時,用MAP函數(shù)比BYROW函數(shù)更適合。這期就給大家聊一下MAP函數(shù)。

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

語法概要

1)基礎(chǔ)語法

以下是MAP的語法格式:

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

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

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

公式返回結(jié)果如下圖所示。


……

2)遍歷順序

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

還是舉個簡單例子。以同樣的數(shù)據(jù)為例,不但語文要加10分,數(shù)學(xué)也要加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表達(dá)式,每個元素+10,返回一個和源數(shù)組尺寸相等的結(jié)果數(shù)組,8行2列,如下圖所示:

……

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

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

例如,需要計(jì)算每個人的成績總分,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表達(dá)式。

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

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

……

4)保留引用特性

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

舉個簡單的例子。

如上圖所示,需要在G列用動態(tài)數(shù)組的形式,統(tǒng)計(jì)每個班級累加出現(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表達(dá)式。_m指向源數(shù)組被遍歷的元素,比如A2,COUNTIF函數(shù)第1參數(shù)是A1:_m,表示統(tǒng)計(jì)范圍,比如A1:A2,在這個范圍中統(tǒng)計(jì)A2出現(xiàn)的次數(shù)。下一個遍歷元素為A3,_m指向A3,COUNTIF在A1:A3中統(tǒng)計(jì)A3出現(xiàn)的次數(shù)……其余以此類推。

實(shí)戰(zhàn)案例

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

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

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)部計(jì)數(shù)

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

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

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

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

=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)計(jì)數(shù)組_a元素的個數(shù),生成一個遞增水平序列,賦值變量_b。

{1,2,3,4,5}

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

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

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

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

……

當(dāng)我們使用了顯性遍歷的函數(shù),諸如MAP/BYROW/SCAN/REDUCE等時,最好使用動態(tài)數(shù)組的形式,一次性返回全部結(jié)果,這可以避免反復(fù)調(diào)取單元格對象到內(nèi)存中,以至于嚴(yán)重拖累計(jì)算速度——這也是我們一直說的,如果WPS不支持動態(tài)數(shù)組,則引入Excel新函數(shù)體系無意義,因?yàn)樗鼔焊鶐Р黄疬@批函數(shù)的計(jì)算速度。

以上述問題為例,如果使用一條函數(shù)公式,返回B列全部計(jì)算結(jié)果,可以在外部嵌套一個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會員群中提問交流↓↓ 揮揮手,關(guān)于REDUCE函數(shù)的講解,咱們以后的推文中再見。

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

??

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
67這才是Excel有史以來最復(fù)雜也是最強(qiáng)大的函數(shù),沒有之一!
扒出一個Excel神技巧:按指定的條件重復(fù)數(shù)據(jù)!
Excel中的“映射”函數(shù):MAP函數(shù)
Excel新函數(shù):MAP函數(shù)基礎(chǔ)
【MAP函數(shù)】循環(huán)遍歷數(shù)組的每個元素,經(jīng)過運(yùn)算,返回新的數(shù)組!
一段奇葩的1024代碼
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服