【Excel】未來5年你必須要掌握的函數(shù)之8:REDUCE函數(shù)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
微軟為什么將這個(gè)函數(shù)命名為REDUCE函數(shù),這個(gè)問題讓我著實(shí)有些困惑。然而,既然微軟做出了這樣的命名選擇,必定有其深思熟慮的原因。 在前面我們提到的一些函數(shù)中,比如MAP函數(shù)、FILTER函數(shù)、SORT函數(shù)等,它們的名稱往往能夠直觀地反映出函數(shù)的作用。但是,REDUCE函數(shù)卻并沒有這種“望文生義”的特點(diǎn),或者說并不那么直接明了。 REDUCE這個(gè)單詞本身有“減少、縮小”的意義,而REDUCE函數(shù)可以遍歷數(shù)組中的每一個(gè)值,對(duì)每一個(gè)值進(jìn)行指定的運(yùn)算,最終將數(shù)組減少為一個(gè)累計(jì)值?;蛟S正是基于這個(gè)原因,微軟將該函數(shù)命名為REDUCE。這只是我個(gè)人的猜測,但這種解釋似乎也能夠合理說明微軟為什么選擇這個(gè)名稱。 1、基本語法 =REDUCE([initial_value],array,lambda(accumulator,value,calculation)) initial_value是可選參數(shù),它是迭代計(jì)算的起始值。這個(gè)值的類型可以是數(shù)值、文本或其他數(shù)據(jù)類型,具體取決于后續(xù)的計(jì)算需求。例如,如果要對(duì)一個(gè)數(shù)字?jǐn)?shù)組進(jìn)行求和,initial_value可以是 0;如果要連接字符串?dāng)?shù)組,initial_value可以是一個(gè)空字符串。 array是必需參數(shù),它是要進(jìn)行迭代計(jì)算的數(shù)組,可以是單元格區(qū)域(如A1:A10)或者常量數(shù)組(如{1,2,3})。 lambda_expression是必需參數(shù),它是一個(gè)Lambda函數(shù),用于定義每次迭代的操作。其中value對(duì)應(yīng)array中的每一個(gè)值。 2、基本用法 1)累計(jì)求和 計(jì)算10+20+…+100的和: =REDUCE(0,D2:D11,LAMBDA(x,y,x+y)) 我們需要重點(diǎn)理解上面這個(gè)公式的運(yùn)行邏輯: 設(shè)定初始值為 0,而參與運(yùn)算的數(shù)組為[D2:D11]單元格區(qū)域所涵蓋的值。當(dāng)運(yùn)算開始,首次啟動(dòng)計(jì)算步驟,依據(jù)既定規(guī)則,此刻代表數(shù)組中當(dāng)前元素的變量 “y” 取值為該區(qū)域起始單元格 D2 的值,也就是 10,而累積值變量 “x” 初始即為設(shè)定好的 0,二者相加,按照 “x + y”的運(yùn)算邏輯,得出的結(jié)果自然是 10。 緊接著步入第二次運(yùn)算環(huán)節(jié),此時(shí)累積值“x”已然更新為首次運(yùn)算所得的10,而“y”則對(duì)應(yīng)到數(shù)組中的下一個(gè)元素,即單元格 D3 的值 20,再度執(zhí)行 “x + y” 運(yùn)算,10 與 20 相加,其結(jié)果便是 30。 以此類推,直到第十次運(yùn)算,此時(shí)的累積值 “x” 歷經(jīng)前面九次的逐步累積與更新,已然達(dá)到 450,而 “y” 所對(duì)應(yīng)的則是數(shù)組中 D11 單元格的值 100,再度進(jìn)行“x + y” 的運(yùn)算操作,450 與 100 相加,最終得出的550 便是這場運(yùn)算歷程的最終結(jié)果,至此運(yùn)算結(jié)束。 其實(shí)這里的x就是累加器。 2)條件求和 計(jì)算所有大于60的和: =REDUCE(0,D2:D11,LAMBDA(x,y,IF(y>60,x+y,x))) 3)條件計(jì)數(shù) 計(jì)算所有大于60的個(gè)數(shù): =REDUCE(0,D2:D11,LAMBDA(x,y,IF(y>60,x+1,x))) 4)字符串連接 將所有的小寫字母連接在一起: =REDUCE("",D3:D16,LAMBDA(x,y,IF(AND(CODE(y)<=122,CODE(y)>=97),x&y,x))) 該文章在 2024/11/26 9:53:59 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |