如何理解和使用REDUCE函數(shù)?
?
作者:小窩來源:部落窩教育發(fā)布時(shí)間:2024-03-12 17:37:06點(diǎn)擊:1600
REDUCE函數(shù)是Excel 365中的函數(shù),它自帶累加器功能。如何理解REDUCE的累加或累計(jì)功能呢?如何運(yùn)用REDUCE函數(shù)呢?下面小窩為大家詳細(xì)介紹。
今天小窩為大家介紹REDUCE函數(shù)。
REDUCE函數(shù)是LAMBDA函數(shù)的伴侶函數(shù)之一,內(nèi)含累加器,可以實(shí)現(xiàn)迭代累加。當(dāng)前,需要Excel 365版本才能使用。
1.作用與語法
REDUCE函數(shù)可以將初始值和數(shù)組代入LAMBDA函數(shù)中進(jìn)行運(yùn)算并累加。
=REDUCE(初始值,數(shù)組,LAMBDA(參數(shù)1,參數(shù)2,計(jì)算式)
初始值,就是累加器的起始值。
數(shù)組,需要參與運(yùn)算的數(shù)組。
參數(shù)1和參數(shù)2,就是運(yùn)算的兩個(gè)變量。具體運(yùn)算時(shí),參數(shù)1代表初始值及每次運(yùn)算的結(jié)果值,參數(shù)2將逐個(gè)引用數(shù)組中的每個(gè)值。
計(jì)算式,含兩個(gè)參數(shù)的計(jì)算表達(dá)式。
2.基本用法理解
通過兩個(gè)小實(shí)例,大家可以理解REDUCE函數(shù)的累加運(yùn)算過程。
REDUCE的初始值指定有兩種方式,一種是給出具體的初始值,如0、1、””(空),以及單元格引用等,一種是省略。小窩帶大家分別看看。
1)給出具體的初始值
求下方數(shù)據(jù)的乘積:
忘掉PRODUCT函數(shù),假裝自己只知道一個(gè)一個(gè)單元格的相乘:
設(shè)初始累加值X為1,相乘的數(shù)組為Y,逐個(gè)相乘的過程可以分解為:
注意看,X只在第一次運(yùn)算的時(shí)候代表初始值,其他時(shí)候代表上次運(yùn)算的結(jié)果值(實(shí)現(xiàn)了累加)。而Y則逐次從數(shù)組中從左到右從上到下取。
REDUCE函數(shù)按照上面的過程進(jìn)行運(yùn)算,公式寫成:
=REDUCE(1,B2:E3,LAMBDA(X,Y,X*Y))
初始值,對(duì)應(yīng)LAMBDA的X參數(shù);數(shù)組,對(duì)應(yīng)LAMBDA的Y參數(shù);用初始值乘以Y中第一個(gè)數(shù),其積被REDUCE累計(jì)作為下一次X初始值;然后取Y的第二個(gè)數(shù)與第二個(gè)初始值(也就是第一次的積)相乘……如此將Y中的數(shù)據(jù)都遍歷一次,并將最后一次的積作為結(jié)果輸出。
2)省略初始值
初始值也可以省略,省略的話,就表示直接將數(shù)組Y中的第一個(gè)值作為第一次運(yùn)算的結(jié)果值(即第二次運(yùn)算的初始值)。
這次不求乘積,而是求乘積算式,如下圖。
用REDUCE函數(shù),公式可以寫成:
=REDUCE(,B17:E18,LAMBDA(x,y,x&"*"&y))
3.典型應(yīng)用
1)反轉(zhuǎn)字符串
小窩曾介紹用LAMBDA遞歸實(shí)現(xiàn)反轉(zhuǎn)字符串。今天用REDUCE也可以。
=REDUCE("",MID(I3,SEQUENCE(LEN(I3)),1),LAMBDA(X,Y,Y&X))
說明:
MID(I3,SEQUENCE(LEN(I3)),1),將I3單元格中字符串拆分得到多行單字符數(shù)組,作為Y參數(shù);然后取Y中第一個(gè)值“我”與初始值空值(””)進(jìn)行連接,其連接結(jié)果作為第二次的初始值;再取Y中的第二個(gè)值“愛”,連接第二個(gè)初始值“我”,得到“愛我”作為第三次的初始值……以此類推完成反轉(zhuǎn)。
2)批量替換字符
按替換表批量替換數(shù)據(jù)中的字符。
=REDUCE(I11,L11:L15,LAMBDA(x,y,SUBSTITUTE(x,y,OFFSET(y,0,1))))
3)按指定次數(shù)批量復(fù)制數(shù)據(jù)
按次數(shù)復(fù)制數(shù)據(jù),小窩曾介紹過多種方式,有PQ法、輔助列加函數(shù)法、數(shù)組運(yùn)算法等。今天,小窩用REDUCE函數(shù)搞定。
公式=REDUCE("數(shù)據(jù)",I19:I22,LAMBDA(X,Y,VSTACK(X,EXPAND(Y,OFFSET(Y,,1),,Y))))
說明:
將每個(gè)Y值代入EXPAND(Y,OFFSET(Y,,1),,Y)中得到復(fù)制后的數(shù)組,再用VSTACH將“數(shù)據(jù)”與它們?cè)诖怪狈较蜻B接起來。
4)制作工資條
我們?cè)窒磉^用操作法制作工資條,今天小窩告訴大家用純函數(shù)法制作工資條。
公式=IFNA(REDUCE("",I32:I36,LAMBDA(x,y,VSTACK(x,I31:J31,FILTER(I32:J36,I32:I36=y),""))),"")
說明:
FILTER(I32:J36,I32:I36=y),逐個(gè)篩選等于第一個(gè)姓名、第二個(gè)姓名……的數(shù)據(jù),然后用VSTACK命令,將其與工資表頭、空行串在一起。由于初始值與VSTACK的第四個(gè)參數(shù)都是單列的空值,所以用VSTACK組合單列與多列數(shù)據(jù)時(shí),必然會(huì)出現(xiàn)#N/A錯(cuò)誤值。因此,最后用IFNA(當(dāng)然也可用IFERROR)將錯(cuò)誤值變成空值。
5)提取字母
提取字符串中所有字母,如果用其他函數(shù),公式比較長,用REDUCE函數(shù)則比較簡單。
公式=TRIM(REDUCE("",MID(I82,ROW($1:$56),1),LAMBDA(x,y,x&IF((y>="a")*(y<="z"),y," "))))
說明:
MID(I82,ROW($1:$56),1),將字符串拆分成多行單字符組成的數(shù)組;逐個(gè)判斷該數(shù)組中的每個(gè)字符是否在A~Z中,是保留,不是變成空格;再用連接符&將它們與初始值串起來;最后用TRIM去掉多余的空格。
6)數(shù)據(jù)組合
在LAMBDA教程中,小窩分享了用遞歸實(shí)現(xiàn)數(shù)據(jù)的組合?,F(xiàn)在我們用REDUCE來做數(shù)據(jù)組合。
公式可以寫成=REDUCE(I54:I55,J54:K54,LAMBDA(x,y,TOCOL(x&TOROW(OFFSET(y,,,4),1))))
說明:
第一次運(yùn)算,初始值是一列兩行的數(shù)組,{“初”;”高”};Y取第一個(gè)值,即J54單元格。TOROW(OFFSET(y,,,4),1),將J54:J56變成一行三列{“一”,”二”,”三”}。(這里OFFSET中第4參數(shù)只所以寫成4,是因?yàn)楫?dāng)前數(shù)據(jù)最大行數(shù)就是4。)x&TOROW(OFFSET(y,,,4),1),做兩個(gè)數(shù)組的連接運(yùn)算,得到一個(gè)兩列三行的數(shù)組:
再用TOCOL將其變成一列六行的結(jié)果,該結(jié)果將是第二次運(yùn)算的初始值:
第二次運(yùn)算,Y取第二個(gè)值,即K54單元格。接著重復(fù)第一次的過程,這里就不截圖了。
4.總結(jié)
REDUCE函數(shù)必須搭配LAMBDA函數(shù)使用,通過自身的累加器功能可以實(shí)現(xiàn)迭代運(yùn)算。
函數(shù)中,初始值可以有,也可以省略;省略的話,就取數(shù)組的第一個(gè)值作為第一次運(yùn)算結(jié)果。初始值可以是單個(gè)數(shù)據(jù),也可以是數(shù)組(如最后一個(gè)實(shí)例)。初始值是累計(jì)變化的,第二次運(yùn)算的初始值就是第一次運(yùn)算的結(jié)果值。
函數(shù)中的數(shù)組將進(jìn)行遍歷,其每個(gè)值都會(huì)與初始值做一次運(yùn)算。
本文配套的練習(xí)課件請(qǐng)?zhí)砑涌头⑿?span>buluowojiaoyu索取。
做Excel高手,快速提升工作效率,部落窩教育Excel精品好課任你選擇!
掃下方二維碼關(guān)注公眾號(hào),可隨時(shí)隨地學(xué)習(xí)Excel:
相關(guān)推薦:
用數(shù)組運(yùn)算搞定按指定次數(shù)復(fù)制數(shù)據(jù)
用PQ按指定次數(shù)復(fù)制數(shù)據(jù)
版權(quán)申明:
本文作者小窩;部落窩教育享有稿件專有使用權(quán)。若需轉(zhuǎn)載請(qǐng)聯(lián)系部落窩教育。
最熱教程
- 像綠皮火車一樣長像珠穆拉瑪峰一樣高的Excel表怎么操作才方便?
- Power Query實(shí)戰(zhàn):按指定次數(shù)遞增數(shù)據(jù)
- 2019年全網(wǎng)最全—excel提取身份證信息合集?。ńㄗh收藏)-下篇
- 明明沒有重復(fù),Excel卻判定數(shù)據(jù)重復(fù),這是怎么回事?
- 文本格式的求和,及求和中最容易出現(xiàn)的問題解疑
- 致命缺陷:不懂一維表!
- 函數(shù)組合思維,你有嗎?
- 學(xué)會(huì)這2個(gè)公式,整理考勤數(shù)據(jù)只要一分鐘
- 就算被說是拍馬屁也成,今天你應(yīng)該這樣發(fā)Excel報(bào)表……
- 如何計(jì)算Excel單元格中的算式,四種求和方法請(qǐng)收好!