地 球 不 爆 炸 我 們 不 打 烊
>>>上課啦: MAP函數(shù)能夠?qū)υ磾?shù)組中的每個(gè)元素應(yīng)用同一表達(dá)式并返回新數(shù)組。不但支持鏈?zhǔn)秸{(diào)用和動態(tài)數(shù)組,還與其他函數(shù)相結(jié)合實(shí)現(xiàn)復(fù)雜數(shù)據(jù)的轉(zhuǎn)換計(jì)算。本期小課堂我們分享學(xué)習(xí)MAP函數(shù) ▼ 言之有李: ☆☆ 什么是“映射”??? ☆☆ 映射是指兩個(gè)數(shù)組或者兩個(gè)集合之間元素相互對應(yīng)的關(guān)系。 ☆☆ MAP函數(shù)的定義??? ☆☆ MAP函數(shù):逐個(gè)遍歷實(shí)現(xiàn)映射,即兩個(gè)非空集合A與B存在著對應(yīng)關(guān)系f,而且對于A中的每一個(gè)元素a,B中總有唯一的一個(gè)元素b與之對應(yīng)(MAP函數(shù)就是實(shí)現(xiàn)非空集合A影射到非空集合B的計(jì)算過程) ☆☆ MAP函數(shù)的語法??? ☆☆ =MAP(Array1,LAMBDA_or_Array<#>) ☆☆ =MAP(數(shù)組1,LAMBDA自定義表達(dá)式或者數(shù)組2,LAMBDA自定義表達(dá)式或者數(shù)組3,……,LAMBDA自定義表達(dá)式或者數(shù)組n) ☆☆ MAP函數(shù)的原理??? ☆☆ MAP函數(shù)是按照從上到下,從左到右的順序遍歷數(shù)組中的每個(gè)元素,執(zhí)行LAMBDA自定義表達(dá)式,最后返回和源數(shù)組尺寸相同的結(jié)果數(shù)組。如下圖所示 ▼MAP函數(shù)原理 拋磚引玉: 和BYROW函數(shù)和BYCOL函數(shù)一樣,當(dāng)?shù)?參數(shù)Array源數(shù)組為引用時(shí),則MAP函數(shù)同樣也會保留引用屬性。請看如下例題 【例題1】在B列統(tǒng)計(jì)每個(gè)BOM名稱累加出現(xiàn)的次數(shù) ▼ 小試牛刀: ※※ 如果妳能接受編程函數(shù)的話,請?jiān)贐2單元格內(nèi)編輯函數(shù)公式=MAP(A2:A12,LAMBDA(x,COUNTIF(A2:x,x))),ENTER回車 ※※ 如果妳能接受動態(tài)數(shù)組的話,請?jiān)贐2單元格內(nèi)編輯函數(shù)公式=COUNTIF(OFFSET(A2,,,ROW($1:$11)),A2:A12),ENTER回車 庖丁解牛: 我們對=MAP(A2:A12,LAMBDA(x,COUNTIF(A2:x,x)))函數(shù)公式進(jìn)行解析 ?? MAP函數(shù)的第1參數(shù)Array引用數(shù)組A2:A12,系統(tǒng)會遍歷該數(shù)組中的每個(gè)元素,執(zhí)行LAMBDA自定義表達(dá)式運(yùn)算 ?? LAMBDA函數(shù)的第1參數(shù)Parameter指向源數(shù)組A2:A12中被系統(tǒng)所遍歷的每個(gè)元素 ?? COUNTIF函數(shù)的第1參數(shù)Rang是A2:x,表示統(tǒng)計(jì)范圍;COUNTIF函數(shù)的第2參數(shù)Criteria是x,表示統(tǒng)計(jì)條件 ?? 函數(shù)公式的計(jì)算過程為
拋磚引玉: MAP函數(shù)通常是將計(jì)算結(jié)果作為內(nèi)存數(shù)組的形式,傳遞給其他函數(shù)。即:它只是一個(gè)計(jì)算過程,而非最終結(jié)果。請看如下例題 【例題2】統(tǒng)計(jì)每個(gè)人物出現(xiàn)的次數(shù) ▼ 小試牛刀: ※※ 在D1單元格內(nèi)編輯函數(shù)公式
庖丁解牛: ?? LET函數(shù)的第1參數(shù)和第2參數(shù)x,TEXTSPLIT(TEXTJOIN(",",,B2:B11),,","),表示先借助TEXTJOIN函數(shù)對人物內(nèi)容進(jìn)行拼接,再借助TEXTSPLIT函數(shù)對拼接內(nèi)容進(jìn)行拆分,后賦值于變量x。如下圖所示 ▼ ?? LET函數(shù)的第3參數(shù)和第4參數(shù)y,UNIQUE(x),表示借助UNIQUE函數(shù)對變量x去重并賦值于變量y。如下圖所示 ▼ ?? 借助SEQUENCE函數(shù)對變量y構(gòu)造序列。如下圖所示 ▼ ?? 借助MAP函數(shù)對遍歷映射的人物出現(xiàn)次數(shù)進(jìn)行匯總。如下圖所示 ▼ ?? 借助HSTACK函數(shù)將“序號”、“人物”和“次數(shù)”返回結(jié)果進(jìn)行橫向堆疊。如下圖所示 ▼ ?? 借助VSTACK函數(shù)將“序號”、“人物”和“次數(shù)”字段標(biāo)題進(jìn)行縱向堆疊。如下圖所示 ▼ 下課啦>>>: 當(dāng)我們使用BYROW、BYCOL、MAP、MAKEARRAY、REDUCE、SCAN和ISOMITTED等編程類函數(shù)時(shí),必須要借助Excel的動態(tài)數(shù)組功能,一次性返回全部結(jié)果。這樣可以有效的避免反復(fù)調(diào)用單元格對象到內(nèi)存中不至于影響Excel的運(yùn)行和計(jì)算速度! 如果WPS不支持動態(tài)數(shù)組功能,則強(qiáng)行引入新函數(shù)將變得毫無意義!
|
|