連續(xù)數(shù)統(tǒng)計(jì)就用FREQUENCY 編按: 如何使用MAP函數(shù)?MAP函數(shù)有何實(shí)際意義?本篇教程為大家解惑。 今天小窩向大家分享MAP函數(shù)的用法。MAP函數(shù)同樣需要嵌套LAMBDA函數(shù)使用。MAP函數(shù)依次將數(shù)組的每個(gè)值代入LAMBDA函數(shù)中進(jìn)行運(yùn)算并以數(shù)組的形式輸出各自的結(jié)果。MAP在此處不是地圖,而是映射:將數(shù)組各值運(yùn)算后的結(jié)果按其原來(lái)位置關(guān)系映射成新數(shù)組。=MAP(數(shù)組,LAMBDA運(yùn)算式)數(shù)組,要參與運(yùn)算的數(shù)組,可以有多個(gè)數(shù)組。LAMBDA運(yùn)算式,是最后一個(gè)參數(shù),其變量的多少取決于數(shù)組的多少。譬如一個(gè)數(shù)組,則LAMBDA只有一個(gè)變量;兩個(gè)數(shù)組,LAMBDA就有兩個(gè)變量。譬如求每個(gè)數(shù)據(jù)的平方,公式=MAP(B13:B18,LAMBDA(x,x^2))再譬如求數(shù)據(jù)的累加和,公式=MAP(B23:B28,LAMBDA(x,SUM(B23:x)))數(shù)組中各數(shù)據(jù)參與運(yùn)算包含兩種:既可以是數(shù)組中的各值參與運(yùn)算,也可以是數(shù)組中各單元格參與運(yùn)算。當(dāng)前的累加和,X代表的就是單元格引用而非具體的值。譬如求兩列數(shù)的和,公式=MAP(A33:A38,B33:B38,LAMBDA(x,y,x+y))多個(gè)數(shù)組運(yùn)算,各數(shù)組的大小須一致,譬如當(dāng)前A33:A38和B33:B38都是6行1列的數(shù)組。如果運(yùn)算的數(shù)組大小不一致,缺少項(xiàng)將出現(xiàn)#N/A錯(cuò)誤,譬如=MAP(A33:A38,B33:B37,LAMBDA(x,y,x+y)):3)LAMBDA運(yùn)算的每次結(jié)果須是單個(gè)值而不是數(shù)組譬如求下列數(shù)據(jù)分別加10和5的和,公式=MAP(B43:B48,LAMBDA(x,x+{10,5}))得不到正確結(jié)果:MAP會(huì)輸出由每個(gè)X的結(jié)果組成的數(shù)組,而當(dāng)前每個(gè)X的結(jié)果都是一個(gè)數(shù)組(X+{10,5}會(huì)得到一個(gè)數(shù)組而不是一個(gè)數(shù)),這就成了嵌套數(shù)組。因?yàn)镋xcel函數(shù)不支持嵌套數(shù)組,所以結(jié)果是#CALC!錯(cuò)誤。到這里,想必大家對(duì)MAP的用法有了清楚的認(rèn)識(shí),同時(shí)會(huì)浮現(xiàn)一個(gè)疑惑:MAP有用嗎?每個(gè)數(shù)據(jù)加10,直接數(shù)組運(yùn)算更簡(jiǎn)便:每個(gè)數(shù)據(jù)的平方,同樣數(shù)組運(yùn)算很簡(jiǎn)便:求累計(jì)和,也有簡(jiǎn)短公式=SUM($B$23:B23):甚至MAP函數(shù)不支持的嵌套數(shù)組,也可以直接運(yùn)算,=B43:B48+{10,5}:諸如以上,用MAP函數(shù),不但公式長(zhǎng),還有限制條件,為何還需要MAP函數(shù)呢?(1)有很多函數(shù)是聚合類的,只輸出單個(gè)值而無(wú)法得到數(shù)組,如SUM、MAX、COUNT、AND等;對(duì)這類函數(shù),如果要輸出數(shù)組,就需要MAP;(2)MAP函數(shù)可以只寫(xiě)一個(gè)公式就完成整列數(shù)據(jù)處理,而不再需要公式的下拉填充;(3)當(dāng)需要原數(shù)組各自用同一算式計(jì)算后再分別代入另一個(gè)算式中計(jì)算時(shí),用MAP就不用建立輔助列。譬如,求下方各行數(shù)據(jù)的最大值。使用MAX函數(shù)公式得到B53:C53的最大值,然后向下填充得到其他行的最大值。由于MAX是聚合類函數(shù),只輸出一個(gè)最大值,所以我們不可能通過(guò)在MAX參數(shù)中添加數(shù)組來(lái)得到各行的最大值,如下方兩個(gè)公式都不行:=MAX(B53:C53,B54:C54,B55:C55,B56:C56,B57:C57)要想一個(gè)公式就得到所有行的最大值,只能用MAP函數(shù),=MAP(B53:B57,C53:C57,LAMBDA(X,Y,MAX(X,Y))):小窩曾分享下拉填充REDUCE函數(shù)公式進(jìn)行多字符替換?,F(xiàn)在與MAP配合,可以一個(gè)公式完成所有替換:=MAP(B89:B93,LAMBDA(a,REDUCE(a,F89:F93,LAMBDA(x,y,SUBSTITUTE(x,y,OFFSET(y,0,1))))))現(xiàn)在匯總表標(biāo)題和班級(jí)都有了。用傳統(tǒng)公式的話,可以=TEXTJOIN("、",1,FILTER($C$98:$C$105,$B$98:$B$105=F98))并向下填充:=MAP(F98:F99,LAMBDA(x,TEXTJOIN("、",1,FILTER(C98:C105,B98:B105=x)))):
|