辦公效率提升的得力助手! WPS新增函數(shù)REDUCE基礎應用詳解

WPS新增了一系列函數(shù),新增的這一系列函數(shù),讓WPS在處理表格數(shù)據(jù)時,大大提高了工作效率和處理表格數(shù)據(jù)的能力,特別是REDUCE函數(shù)是這次新增這些函數(shù)中一個非常強大的存在。下面列舉一些例子來分享REDUCE函數(shù)的基本用法,希望給大家?guī)硪恍W習REDUCE函數(shù)的幫助。
一、REDUCE函數(shù)概念及語法
REDUCE函數(shù)通過將LAMBDA函數(shù)應用到每個值并返回累加器中的總值將數(shù)組減小為累計值。它既可以循環(huán)返回單值,也可以將每步循環(huán)的結(jié)果顯示出來,在實際應用中,疊加數(shù)組、變換表格樣式等場景下應用非常多。思路上能用循環(huán)每個元素進行運算然后將結(jié)果堆疊起來解決的問題,差不多都可以考慮REDUCE函數(shù)。
WPS表格中,REDUCE函數(shù)的語法如下:
REDUCE(初始值,數(shù)組,函數(shù)),通過將LAMBDA函數(shù)應用到每個值并返回累加器中的總值將數(shù)組減小為累計值。
在實際應用中REDUCE函數(shù)語法:
REDUCE(初始值,數(shù)組,LAMBDA(x,y,計算公式)),第一參數(shù)為初始值,可以是單值也可以是數(shù)組;第二參數(shù)是要循環(huán)的數(shù)組,也可以只是用來控制循環(huán)次數(shù)的數(shù)組,REDUCE函數(shù)循環(huán)的次數(shù)由第二參數(shù)數(shù)組的元素數(shù)量來決定;第三參數(shù)是LAMBDA函數(shù),確定第二參數(shù)需要執(zhí)行的運算,并將運算結(jié)果形成下一步運算的初始值。x代表每次循環(huán)時的初始值,每次循環(huán)后更新(值不一定更新,可以判斷保留上步運算值),y代表循環(huán)數(shù)組中的每個元素。當然,也可以使用其他數(shù)字分別代表初始值和循環(huán)數(shù)組的元素。
REDUCE函數(shù)的第一個參數(shù)是累加器的起始值,第二個參數(shù)是循環(huán)的數(shù)組,接著是LAMBDA函數(shù)后面的兩個形式參數(shù),例如用x、y來表示,之后是計算公式。它的計算原理是:它把第二個參數(shù)數(shù)組中的第一個值傳遞給LAMBDA函數(shù)后面的形式參數(shù)y,進行一個計算,之后再把計算的結(jié)果以某種方式存儲在累加器x中,之后再傳入第二參數(shù)數(shù)組中的第二個值進行計算,然后與上一步累加器存儲的數(shù)據(jù)進行運算,再把運算的結(jié)果存入累加器x,如此循環(huán)下去,直到第二參數(shù)數(shù)組中的所有數(shù)據(jù)都被遍歷完成,這樣函數(shù)的計算才停止下來。
二、下面通過一些常用場景的例子來說明REDUCE函數(shù)的用法
1.下面公式可以把B2:B3單元格區(qū)域的數(shù)據(jù)拆分后堆疊為一列新的數(shù)據(jù):
公式:=REDUCE("",B2:B3,LAMBDA(x,y,VSTACK(x,TEXTSPLIT(y,,"、"))))
REDUCE函數(shù)是循環(huán)函數(shù),其中x和y分別代表第一參數(shù)和第二參數(shù)中的每一個值,LAMBDA函數(shù)運算生成的結(jié)果作為循環(huán)后的新x。
以上例子,x的初始值是"",即空值,循環(huán)B2:B3單元格區(qū)域,VSTACK對x值進行縱向堆疊。第一次循環(huán)x初始值是空值,y值是“張三豐、李四喜”,新x值為執(zhí)行TEXTSPLIT函數(shù)拆分后的數(shù)據(jù),即“張三豐”、“李四喜”兩行數(shù)據(jù)。第二次循環(huán)時x值為“張三豐”、“李四喜”兩行數(shù)據(jù),y值為“王小五、燕小六、沈七七”,新x值為執(zhí)行TEXTSPLIT函數(shù)拆分后的數(shù)據(jù),即“王小五”、“燕小六”、“沈七七”兩行數(shù)據(jù)。VSTACK函數(shù)對x的結(jié)果時行堆疊就得到了一列數(shù)據(jù)。
對合并數(shù)據(jù)展開,根據(jù)合并人員姓名,把組別和姓名分別展開:
公式:=REDUCE(A1:B1,B2:B3,LAMBDA(x,y,VSTACK(x,IFNA(HSTACK(OFFSET(y,,-1),TEXTSPLIT(y,,"、")),OFFSET(y,,-1)))))
對相同項合并,根據(jù)相同組別,合并姓名項:
公式:=REDUCE(A1:B1,UNIQUE(A2:A6),LAMBDA(x,y,VSTACK(x,HSTACK(y,ARRAYTOTEXT(FILTER(B2:B6,A2:A6=y),0)))))
對相同項合并,根相同組別,合姓名項,同時在前面加序號:
公式:=REDUCE(HSTACK("序號",A1:B1),UNIQUE(A2:A6),LAMBDA(x,y,VSTACK(x,HSTACK(ROWS(x),y,ARRAYTOTEXT(FILTER(B2:B6,A2:A6=y),0)))))
2.例如,下面公式可以給連續(xù)相同的數(shù)據(jù)編號,REDUCE函數(shù)當次循環(huán)時可以引用上次循環(huán)后的x值:
公式:=REDUCE({"數(shù)據(jù)","序號"},A2:A15,LAMBDA(x,y,VSTACK(x,HSTACK(y,IF(y=TAKE(x,-1,1),TAKE(x,-1,-1)+1,1)))))
REDUCE函數(shù)第二參數(shù)A2:A15是循環(huán)的次數(shù),IF(y=TAKE(x,-1,1),TAKE(x,-1,-1)+1,1)是判斷當前x最后一行的第一個元素是不是等于當前循環(huán)的y,如果相等,則用當前x最后一行的第二個元素+1,否則就是另外一組的新開始,就重新編號1。然后得到上面的結(jié)果之后,用HSTACK函數(shù)將當前的y和編號橫向連接在一起。最后用VSTAK函數(shù)將x和當前行生成的數(shù)組連接起來。也就是在當前循環(huán)運算時,可以充分引用和利用已經(jīng)生成的x值,例如判斷某個數(shù)據(jù)已經(jīng)出現(xiàn)的次數(shù),可以用SUM(N(y=x))這種去判斷。
返回連續(xù)姓名值的金額匯總:
公式:=REDUCE({"姓名","合計"},A2:A9,LAMBDA(x,y,IF(@TAKE(x,-1)=y,VSTACK(DROP(x,-1),HSTACK(y,SUM(TAKE(x,-1))+OFFSET(y,,1))),VSTACK(x,OFFSET(y,,,,2)))))
以下是,對上面應用場景的變形:
公式:=REDUCE("",A2:A7,LAMBDA(x,y,LET(s,@TAKE(x,-1),t,s=y,VSTACK(DROP(x,-t),IF(t,HSTACK(OFFSET(y,,,,4),TAKE(x,-1,-1)+1),HSTACK(OFFSET(y,,,,4),1))))))
3.根據(jù)指定次數(shù),生成重復值:
公式:=REDUCE(A1,B2:B5,LAMBDA(x,y,VSTACK(x,REPTARRAY(OFFSET(y,,-1),y))))
公式:=REDUCE(A1:B1,B2:B5,LAMBDA(x,y,VSTACK(x,HSTACK(IFNA(EXPAND(OFFSET(y,,-1),y),OFFSET(y,,-1)),SEQUENCE(y)))))
4.金額拆分,對合并人員匯總金額拆分到每個人:
公式:=REDUCE(B1:C1,B2:B3,LAMBDA(x,y,VSTACK(x,LET(t,TEXTSPLIT(y,,"、"),s,OFFSET(y,,1)/ROWS(t),IFNA(HSTACK(t,s),s)))))
對以上例了,升級匯總相同姓名的合計數(shù):
公式:=REDUCE(B1:C1,B2:B5,LAMBDA(x,y,LET(v,VSTACK(x,LET(t,TEXTSPLIT(y,,"、"),s,OFFSET(y,,1)/ROWS(t),IFNA(HSTACK(t,s),s))),GROUPBY(TAKE(v,,1),TAKE(v,,-1),SUM,3,0))))
5.相同產(chǎn)品不同單價,匯總求和:
公式:=REDUCE(G1:J1,A4:A6,LAMBDA(x,y,VSTACK(x,LET(s,(A4:A6=y)*B3:E3*B4:E6,HSTACK(SUBSTITUTE(y,"銷量",),SUM(s),MAP(B2:C2,LAMBDA(z,SUM((B2:E2=z)*s))))))))
6.字符串的逆轉(zhuǎn),即數(shù)據(jù)前后位置互換
公式:=REDUCE("",MID(A1,SEQUENCE(LEN(A1)),1),LAMBDA(x,y,y&x))
7.字符串替換
公式:=TEXTSPLIT(REDUCE(CONCAT(A2:A6&","),B2:B4,LAMBDA(x,y,SUBSTITUTE(x,y&",",))),,",",1)
8.對數(shù)據(jù)去重后進行統(tǒng)計
公式:=REDUCE(A2:B2,UNIQUE(A3:A12),LAMBDA(x,y,VSTACK(x,HSTACK(y,ROWS(UNIQUE(FILTER(A3:B12,A3:A12=y)))))))
9.多個工作表,每個工作表里有唯一查找值,查找引用
公式:=REDUCE(0,ROW(1:3)&"月",LAMBDA(x,y,x+IFERROR(VLOOKUP(A2,INDIRECT(y&"!A:B"),2,0),"")))
REDUCE函數(shù)是WPS新增的一個強大又實用函數(shù),它的應用場景是很廣泛的,以上僅是部分基礎應用案例。
相關文章
一鍵提取工作表名! wps中SHEETSNAME函數(shù)的妙用
今天再和大家分享一個WPS表格中的特有函數(shù)——SHEETSNAME,這個函數(shù),能一鍵提取工作表名稱,詳細請看下文介紹2025-08-19WRAPROWS函數(shù)有什么用? wps表格錯亂數(shù)據(jù)整理神器
wps處理數(shù)據(jù)的時候,經(jīng)常會用到各種函數(shù),今天我們就來看看WRAPROWS函數(shù)的使用方法,詳細如下文所述2025-08-11非標一維數(shù)據(jù)到二維表的靈活轉(zhuǎn)換攻略! WPS中WRAPROWS函數(shù)使用指南
WPS中WRAPROWS函數(shù)的官網(wǎng)說明就是一維數(shù)組轉(zhuǎn)成二維數(shù)組,聽起來平淡無奇,使用場景確實也比較少,但是在某些特定場景下,用這個函數(shù)可以起到一招致勝,詳細請看下文介紹2025-08-11交叉重復提取妙計! wps中REGEXP正則表達式函數(shù)用法
wps表格中不同單元格有有部分數(shù)字是重復的,想要提取重復字符或者數(shù)據(jù),該怎么操作呢?下面我們就來看看詳細技巧2025-08-08SUM函數(shù)求和出錯怎么辦? wps數(shù)據(jù)格式錯誤導致SUMIFS失效的解決辦法
遇到SUM函數(shù)統(tǒng)計卻沒有得到結(jié)果的問題怎么辦?先別急著檢查公式對不對,很可能你的統(tǒng)計區(qū)域里藏了文本格式的數(shù)據(jù),下面我們就來看看詳細解決辦法2025-08-06實現(xiàn)動態(tài)裝箱計算! wps中ddb+text函數(shù)公式的使用技巧
wps中有很多函數(shù)組合到一起會達到神奇的效果,比如我們今天用到的ddb+text函數(shù),可以輕松實現(xiàn)現(xiàn)動態(tài)裝箱計算,詳細如下2025-07-30從此以后寫公式又有一種新路子! wps中用Let函數(shù)玩變量的技巧
wps中Let函數(shù)給計算結(jié)果分配名稱,就像編程里的變量一樣,它讓你的公式更清晰,減少冗余,下面我們就來看看用Let函數(shù)玩變量的技巧2025-07-22提取任意行列數(shù)據(jù)太好用了! wps中chooserows與choosecols函數(shù)使用技巧
CHOOSECOLS CHOOSEROWS這兩個函數(shù)屬于同一類函數(shù),函數(shù)的目標很明確,就是返回一組數(shù)據(jù)中,指定的行或列,類似OFFSET中返回指定區(qū)域,下面我們就來看看使用技巧2025-07-15輕松搞定九九乘法表案例! wps利用MMULT函數(shù)玩矩陣的技巧
MMULT函數(shù)是wps中的一個標準數(shù)學函數(shù),用于計算兩個矩陣的乘積,用它昨九九乘法表確認方便,詳細請看下文介紹2025-07-03萬能文本函數(shù)REGEXP! wps表格中混亂數(shù)據(jù)處理除了textsplit函數(shù)用它也不
今天我們來介紹正則表達式函數(shù)REGEXP,這個函數(shù)非常好用,有了它,很多文本函數(shù)都可以不用了,在介紹它之前,我們一起來學習一下正則表達式的基礎知識以及用法2025-07-03