中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Excel中的“聚合”函數(shù):REDUCE函數(shù)

今天講講Excel中的新函數(shù):REDUCE函數(shù)。

這個函數(shù)也是伴隨著LAMBDA函數(shù)使用的。

我們前面介紹LAMBDA函數(shù)的時候說過,LAMBDA函數(shù)讓Excel本身構(gòu)成了一個“函數(shù)式語言”(參見這個新函數(shù),讓Excel進入了一個新的境界)。

在函數(shù)式語言中,MAP/REDUCE是非常“通用”的函數(shù),幾乎每種函數(shù)式編程語言都會實現(xiàn)這兩個函數(shù)。

相對來說,從用戶理解的角度,REDUCE函數(shù)比著MAP函數(shù)稍顯復(fù)雜。

所以,我們先舉一個非常簡單的例子,來說明一下REDUCE函數(shù)的用法吧。

=REDUCE(0,A2:A5,LAMBDA(acc,v,acc+v))

像MAP函數(shù)一樣,REDUCE函數(shù)的最后一個參數(shù)也是一個LAMBDA函數(shù)。這個函數(shù):

LAMBDA(acc,v,acc+v)

接收兩個參數(shù):

acc

v

然后將這兩個參數(shù)加起來(acc+v)作為返回值。

說的這么熱鬧,就是求和而已??。

(沒錯,我們就用一個簡單的求和,這樣我們就可以集中精力關(guān)注REDUCE的邏輯了)。

再看這個REDUCE公式的前面兩個參數(shù):

0,

A2:A5

一個是常量0,一個是區(qū)域A2:A5

它們顯然對應(yīng)于后面的LAMBDA函數(shù)的兩個參數(shù):

acc,

v

因為A2:A5是個數(shù)組,所以,REDUCE肯定是循環(huán)數(shù)組中的每個值,將每個值當(dāng)作lambda函數(shù)的參數(shù)v使用,分別跟acc求和。

那么這個acc=0又是干什么用的呢?

這是這個函數(shù)的稍微需要花點時間解釋的地方。

我們來看一下這個函數(shù)的語法:

其中的數(shù)組就是我們的A2:A5,函數(shù)就是最后一個參數(shù)LAMBDA,關(guān)鍵就是這個:

initial_value

初始值?

什么的初始值?

原來,REDUCE函數(shù)在內(nèi)部維護了一個東西,叫做“累加器”,英文叫做“accumulator“。

而在第三個參數(shù)LAMBDA函數(shù)里,接收的第一個參數(shù)根本不是那個”0“,而是這個accumulator,只不過,在這里,我們給這個accumulator一個初始值:0

這個函數(shù)的工作方式是這樣的,

簡單說明一下:

因為數(shù)組有四個元素,所以需要四步。

第一步,計算數(shù)組中的第一個元素:1。

accumulator采用初始值0,v的值就是數(shù)組的第一個元素:1,結(jié)果就是0+1=1。

第二步,計算數(shù)組中的第二個元素:2。

accumulator采用上一步的計算結(jié)果:1,v的值就是數(shù)組的第二個元素:2,結(jié)果就是1+2=3。

第三步,計算數(shù)組中的第三個元素:3。

accumulator采用上一步的計算結(jié)果:3,v的值就是數(shù)據(jù)的第三個元素:3,結(jié)果就是3+3=6。

第四步,計算數(shù)組中的第四個元素:4。

accumulator采用上一步的計算結(jié)果:6,v的值就是數(shù)據(jù)的第四個元素:4,結(jié)果就是6+4=10。

計算完成!

所以,REDUCE這個函數(shù)就是對第二個參數(shù)的數(shù)組做循環(huán),循環(huán)中的計算方法就是LAMBDA函數(shù)中使用的邏輯。

注:大家不用被”累加器“這個名詞給帶偏了,LAMBDA的算法不僅僅限于加法,什么計算都是可以的。

一個例子

下面我們使用另外一個例子來說明一下為什么要使用REDUCE函數(shù)。

假設(shè)我們有下面的數(shù)據(jù):

我們現(xiàn)在想計算一下其中的所有偶數(shù)的和,可以使用下面的公式:

=REDUCE(0,A2:A11,LAMBDA(acc,v,IF(ISEVEN(v),acc+v,acc)))

這個里面的邏輯就是LAMBDA函數(shù)了。

其中就是判斷數(shù)組中的元素是否是偶數(shù),如果是,就加在合計里。

這是結(jié)果:

那么,為什么要使用REDUCE函數(shù)呢。

首先,很多人可能會想,我可以采用數(shù)組公式呀,比如:

{=SUM(IF(ISEVEN(A2:A11),A2:A11,0))}

這是一個數(shù)組公式,需要CTRL+SHIFT+ENTER輸入。

或者采用FILTER函數(shù):

=SUM(FILTER(A2:A11,ISEVEN(A2:A11)))

但是,遺憾的是,這兩種都不行。

因為ISEVEN函數(shù)也是不接受數(shù)組參數(shù)的。

當(dāng)然,你可以改變個寫法:

=SUM(FILTER(A2:A11,MOD(A2:A11,2)=0))

這次結(jié)果對了

我們總結(jié)一下:

這里我們用了三個非REDUCE函數(shù)來嘗試做同樣的結(jié)果,其中,前面兩種都失敗了,而后一種結(jié)果是對的。

而REDUCE和最后一個SUM(FILTER)相比有什么好處呢。

簡單來說,用FILTER的時候,因為不能使用ISEVEN函數(shù),所以必須繞個彎,使用MOD函數(shù)判斷余數(shù)是否為0。

而REDUCE函數(shù)就比較直接,邏輯清晰一些。

實際上這是MAP/REDUCE函數(shù)的一種優(yōu)勢,可以跟LAMBDA結(jié)合,處理數(shù)組,避免了很多函數(shù)不能處理數(shù)組的問題。

另外,REDUCE函數(shù)還有一個好處,就是函數(shù)的邏輯可以重復(fù)使用。

如果我們通過名稱定義了自定義函數(shù):

SUMEVEN=LAMBDA(acc,v,IF(ISEVEN(v),acc+v,acc))

那么,上述的REDUCE函數(shù)就可以寫成:

=REDUCE(0,A2:A11,SUMEVEN)

在任何需要這個邏輯的地方都可以通過這個自定義函數(shù)使用這個邏輯。當(dāng)然,修改更加方便,只要在一個地方修改就可以了。

當(dāng)然,這么做,還帶來了另外一個好處,那就是公式的可讀性更強了。

那么,REDUCE又是什么意思呢?

從名稱上看,這個REDUCE不是非常好理解。不過有人認(rèn)為這個函數(shù)是將一個數(shù)組或區(qū)域的值處理后變成了一個數(shù)值,所以才叫REDUCE。這么理解當(dāng)然有一定道理。

在函數(shù)式編程語言中,REDUCE一般被看作“聚合”,英文是AGGREGATE,在Excel中專門有一個叫做AGGREGATE的函數(shù)。實際上,就是對一個數(shù)據(jù)庫或者數(shù)據(jù)列表進行某種合計運算,包括:

求和

求乘積

求最大值(最小值)

求平均值

計數(shù)

求方差(標(biāo)準(zhǔn)差)

等等

當(dāng)然,以上的計算在Excel中都有相應(yīng)的函數(shù)。但是有時有需要對原始數(shù)據(jù)進行一番處理后,才能使用,這樣往往會帶來邏輯的復(fù)雜與多變。此時,可以使用REDUCE函數(shù)來執(zhí)行這些計算。

·end·

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Excel函數(shù)有上百個,不過以后真正學(xué)會這一個水平就相當(dāng)不錯了
Excel的循環(huán)函數(shù) - 累加器的秘密:用數(shù)組作累加器
【REDUCE】迭代器函數(shù),像循環(huán)一樣運行!
REDUCE函數(shù),函數(shù)版FOR循環(huán)!
13個JavaScript數(shù)組reduce的實例方法
Excel中REDUCE與LAMBDA函數(shù)由淺入深地學(xué)習(xí)與應(yīng)用
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服