二維碼 購(gòu)物車
部落窩在線教育歡迎您!

如何理解和使用REDUCE函數(shù)?

?

作者:小窩來(lái)源:部落窩教育發(fā)布時(shí)間:2024-03-12 17:37:06點(diǎn)擊:1307

分享到:
0
收藏    收藏人氣:0人
版權(quán)說(shuō)明: 原創(chuàng)作品,禁止轉(zhuǎn)載。
編按:

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.作用與語(yǔ)法

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.基本用法理解

通過(guò)兩個(gè)小實(shí)例,大家可以理解REDUCE函數(shù)的累加運(yùn)算過(guò)程。

REDUCE的初始值指定有兩種方式,一種是給出具體的初始值,如0、1””(空),以及單元格引用等,一種是省略。小窩帶大家分別看看。

1)給出具體的初始值

求下方數(shù)據(jù)的乘積:

 

表格
描述已自動(dòng)生成

 

忘掉PRODUCT函數(shù),假裝自己只知道一個(gè)一個(gè)單元格的相乘:

 

表格
描述已自動(dòng)生成

 

設(shè)初始累加值X1,相乘的數(shù)組為Y,逐個(gè)相乘的過(guò)程可以分解為:

 

表格
描述已自動(dòng)生成

 

注意看,X只在第一次運(yùn)算的時(shí)候代表初始值,其他時(shí)候代表上次運(yùn)算的結(jié)果值(實(shí)現(xiàn)了累加)。而Y則逐次從數(shù)組中從左到右從上到下取。

REDUCE函數(shù)按照上面的過(guò)程進(jìn)行運(yùn)算,公式寫成:

=REDUCE(1,B2:E3,LAMBDA(X,Y,X*Y))

 



 

初始值,對(duì)應(yīng)LAMBDAX參數(shù);數(shù)組,對(duì)應(yīng)LAMBDAY參數(shù);用初始值乘以Y中第一個(gè)數(shù),其積被REDUCE累計(jì)作為下一次X初始值;然后取Y的第二個(gè)數(shù)與第二個(gè)初始值(也就是第一次的積)相乘……如此將Y中的數(shù)據(jù)都遍歷一次,并將最后一次的積作為結(jié)果輸出。

 

2)省略初始值

初始值也可以省略,省略的話,就表示直接將數(shù)組Y中的第一個(gè)值作為第一次運(yùn)算的結(jié)果值(即第二次運(yùn)算的初始值)。

這次不求乘積,而是求乘積算式,如下圖。

 

表格
描述已自動(dòng)生成

 

REDUCE函數(shù),公式可以寫成:

=REDUCE(,B17:E18,LAMBDA(x,y,x&"*"&y))

 

表格
描述已自動(dòng)生成

 

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))

 

 

說(shuō)明:

MID(I3,SEQUENCE(LEN(I3)),1),將I3單元格中字符串拆分得到多行單字符數(shù)組,作為Y參數(shù);然后取Y中第一個(gè)值“我”與初始值空值(””)進(jìn)行連接,其連接結(jié)果作為第二次的初始值;再取Y中的第二個(gè)值“愛(ài)”,連接第二個(gè)初始值“我”,得到“愛(ài)我”作為第三次的初始值……以此類推完成反轉(zhuǎn)。

 

2)批量替換字符

按替換表批量替換數(shù)據(jù)中的字符。

=REDUCE(I11,L11:L15,LAMBDA(x,y,SUBSTITUTE(x,y,OFFSET(y,0,1))))

 

表格
描述已自動(dòng)生成

 

3)按指定次數(shù)批量復(fù)制數(shù)據(jù)

按次數(shù)復(fù)制數(shù)據(jù),小窩曾介紹過(guò)多種方式,有PQ法、輔助列加函數(shù)法、數(shù)組運(yùn)算法等。今天,小窩用REDUCE函數(shù)搞定。

 

表格
描述已自動(dòng)生成

 

公式=REDUCE("數(shù)據(jù)",I19:I22,LAMBDA(X,Y,VSTACK(X,EXPAND(Y,OFFSET(Y,,1),,Y))))

 

表格
描述已自動(dòng)生成

 

說(shuō)明:

將每個(gè)Y值代入EXPAND(Y,OFFSET(Y,,1),,Y)中得到復(fù)制后的數(shù)組,再用VSTACH將“數(shù)據(jù)”與它們?cè)诖怪狈较蜻B接起來(lái)。

 

4)制作工資條

我們?cè)窒磉^(guò)用操作法制作工資條,今天小窩告訴大家用純函數(shù)法制作工資條。

 

表格
描述已自動(dòng)生成

 

公式=IFNA(REDUCE("",I42:I46,LAMBDA(x,y,VSTACK(x,I41:J41,FILTER(I42:J46,I42:I46=y),""))),"")

 

表格
描述已自動(dòng)生成

 

說(shuō)明:

FILTER(I42:J46,I42:I46=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ù),公式比較長(zhǎng),用REDUCE函數(shù)則比較簡(jiǎn)單。

公式=TRIM(REDUCE("",MID(I82,ROW($1:$56),1),LAMBDA(x,y,x&IF((y>="a")*(y<="z"),y," "))))

 

表格
描述已自動(dòng)生成

 

說(shuō)明:

MID(I82,ROW($1:$56),1),將字符串拆分成多行單字符組成的數(shù)組;逐個(gè)判斷該數(shù)組中的每個(gè)字符是否在A~Z中,是保留,不是變成空格;再用連接符&將它們與初始值串起來(lái);最后用TRIM去掉多余的空格。

 

6)數(shù)據(jù)組合

LAMBDA教程中,小窩分享了用遞歸實(shí)現(xiàn)數(shù)據(jù)的組合?,F(xiàn)在我們用REDUCE來(lái)做數(shù)據(jù)組合。

 

表格
描述已自動(dòng)生成

 

公式可以寫成=REDUCE(I54:I55,J54:K54,LAMBDA(x,y,TOCOL(x&TOROW(OFFSET(y,,,4),1))))

 

表格
描述已自動(dòng)生成

 

說(shuō)明:

第一次運(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ù)組:

 

表格
描述已自動(dòng)生成

再用TOCOL將其變成一列六行的結(jié)果,該結(jié)果將是第二次運(yùn)算的初始值:

 

表格
中度可信度描述已自動(dòng)生成

 

第二次運(yùn)算,Y取第二個(gè)值,即K54單元格。接著重復(fù)第一次的過(guò)程,這里就不截圖了。

 

4.總結(jié)

REDUCE函數(shù)必須搭配LAMBDA函數(shù)使用,通過(guò)自身的累加器功能可以實(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

IMG_256

相關(guān)推薦:

LAMBDA函數(shù)遞歸運(yùn)算

用數(shù)組運(yùn)算搞定按指定次數(shù)復(fù)制數(shù)據(jù)

用PQ按指定次數(shù)復(fù)制數(shù)據(jù)

提取數(shù)字和字母的萬(wàn)能公式

版權(quán)申明:

本文作者小窩;部落窩教育享有稿件專有使用權(quán)。若需轉(zhuǎn)載請(qǐng)聯(lián)系部落窩教育。