今天我們來(lái)學(xué)習(xí)下另一個(gè)新函數(shù)——SCAN的用法,它跟上一周講過(guò)的REDUCE函數(shù)非常的相似,也是LAMBDA的輔助函數(shù),只不過(guò)它會(huì)將所有遍歷的結(jié)果都顯示出來(lái),而REDUCE只會(huì)顯示最后的結(jié)果。

一、SCAN

SCAN:通過(guò)對(duì)每個(gè)值應(yīng)用 LAMBDA 來(lái)掃描數(shù)組,并返回具有每個(gè)中間值的數(shù)組。

語(yǔ)法:=SCAN ([initial_value],array,lambda (x,y,body) )

參數(shù)1:初始值

參數(shù)2:需要循環(huán)的數(shù)據(jù)區(qū)域

參數(shù)3:關(guān)于lambda的計(jì)算表達(dá)式

它的參數(shù)與之前講的REDUCE函數(shù)幾乎是一模一樣的,但是作用完全不同,SCAN函數(shù)會(huì)將每個(gè)值的結(jié)果顯示出來(lái),而REDUCE函數(shù)它只會(huì)輸出結(jié)果,我們來(lái)具體演示下

二、案例演示

公式:=SCAN(0,C2:C5,LAMBDA(x,y,y*y+x))

參數(shù)1:0,表示起始值為0

參數(shù)2:C2:C5,表示需要循環(huán)的區(qū)域

參數(shù)3:LAMBDA(x,y,y*y+x),有關(guān)于lambda的表格式

如下圖所示,我們需要對(duì)當(dāng)前的數(shù)據(jù)求平方和,REDUCE它只會(huì)顯示最終的結(jié)果,而SCAN函數(shù)會(huì)將每個(gè)值得結(jié)果都羅列出來(lái),就是說(shuō)結(jié)果個(gè)數(shù)與第二參數(shù)的個(gè)數(shù)是相等的,來(lái)簡(jiǎn)單的說(shuō)下計(jì)算過(guò)程

代入數(shù)字1,x為0,y為1,計(jì)算式為1*1+0,結(jié)果為1,會(huì)將結(jié)果存在x中進(jìn)入下次循環(huán),

代入數(shù)字2,x為1,y為2,計(jì)算式為2*2+1,結(jié)果為5

代入數(shù)字3,x為5,y為3,計(jì)算式為3*3+5,結(jié)果為14

代入數(shù)字4,x為14,y為5,計(jì)算式為4*4+14,結(jié)果為30

打開網(wǎng)易新聞 查看精彩圖片

三、制作階梯圖

公式:=SCAN("",B2:B5,LAMBDA(x,y,REPT("|",y*200)&" "&TEXT(y,"0%")))

SCAN函數(shù)會(huì)顯示每一步的結(jié)果,我們就可以考慮使用REPT+豎線來(lái)構(gòu)建一個(gè)階梯圖,構(gòu)建它的前提是,數(shù)據(jù)要升序排序,并且將文字字體改成Playbill,這個(gè)字體會(huì)將豎線顯示為條形圖的樣子

REPT("|",y*200),這個(gè)函數(shù)的作用是將豎線重復(fù)顯示多次,得到豎線將其顯示為條形圖的樣子,TEXT(y,"0%")用來(lái)設(shè)置數(shù)據(jù)格式,將其轉(zhuǎn)換為百分比格式。

打開網(wǎng)易新聞 查看精彩圖片

四、統(tǒng)計(jì)最大連續(xù)次數(shù)

公式:=MAX(SCAN(0,B2:B15,LAMBDA(x,y,IF(y="勝",x+1,0))))

在這里我們要判斷最大的連勝次數(shù),判斷它是不是勝利,如果勝利就在當(dāng)前的結(jié)果加1,如果失敗了,就返回0,從新開始計(jì)算勝利與否

打開網(wǎng)易新聞 查看精彩圖片

五、合并單元格計(jì)算

公式:=VSTACK({"部門","銷量"},GROUPBY(SCAN(,A2:A12,LAMBDA(x,y,IF(y<>"",y,x))),C2:C12,SUM,,0))

這個(gè)公式的關(guān)鍵點(diǎn)就是SCAN(,A2:A12,LAMBDA(x,y,IF(y<>"",y,x)))

在這里我們將第一參數(shù)省略掉,函數(shù)就會(huì)自動(dòng)返回第二參數(shù)的第一個(gè)值,在A2:A12這個(gè)區(qū)域中第一個(gè)值是【銷售1部】,之后從第二個(gè)元素開始判斷Y是否等于空值,條件成立則返回Y否則返回X,這樣的話就能將合并單元格拆分開,

隨后使用GROUPBY來(lái)進(jìn)行分類匯總,求和就需要設(shè)置三參數(shù)為SUM,計(jì)數(shù)則將SUM改成COUNTA

最后使用VSTACK函數(shù)在最上方連接上表頭,這個(gè)就是公式的計(jì)算過(guò)程

打開網(wǎng)易新聞 查看精彩圖片

以上就是今天分享的全部?jī)?nèi)容,相較于REDUCE函數(shù),SCAN的應(yīng)用應(yīng)不算廣泛,大家了解下即可~