Excel出了一個(gè)新函數(shù),居然讓我能編寫屬于自己的函數(shù)了!

Hi,大家好,我是偏愛(ài)函數(shù)公式,愛(ài)用 Excel 圖表管理倉(cāng)庫(kù)的大叔 Mr 趙~
?
今天和大家分享的是,Office365?新增的一個(gè)函數(shù):LAMBDA?函數(shù)。
?
這個(gè)函數(shù)可不簡(jiǎn)單!
?
用 LAMBDA 函數(shù),不僅可以編寫屬于自己的自定義函數(shù),還能在函數(shù)中調(diào)用自身,也就是大家常說(shuō)的遞歸~
?
下面就來(lái)看看它是怎么做的。
?


比如在 Excel 中,選中任一單元格,輸入公式:
?
=LAMBDA(x,y,x+y)(1,2)

?
得到的結(jié)果是 3。
?
這個(gè)公式是什么意思呢?
?
在 LAMBDA 函數(shù)中,x,y 是我們自己定義的兩個(gè)變量,如下圖;
?

?
x+y 是計(jì)算的表達(dá)式;
公式中最后的(1,2)兩個(gè)數(shù)值分別賦值給 x,y;
即 x=1,y=2,然后把它們代入表達(dá)式 x+y 中,結(jié)果就是 3。
?
由此我們引出?LAMBDA 函數(shù)的語(yǔ)法:
?
=LAMBDA(變量 1,變量 2,...,計(jì)算表達(dá)式)
如果還不明白,不要緊!
咱再舉個(gè)例子:
打小我們就知道,圓的面積公式是:S=πr^2
根據(jù)圓的半徑求面積,用 LAMBD 函數(shù)在 Excel 中寫公式就是這個(gè)樣子的:

?
在 C3 單元格輸入公式:
?
=LAMBDA(r,PI()*r^2)(B3)
?
LAMBDA 函數(shù)定義了一個(gè)變量 r 表示半徑;
?

?
PI()*r^2 是求面積的表達(dá)式,PI()在 Excel 中就是圓周率π,
?
后面 B3 單元格的值 1,賦值給變量 r=1,然后代入表達(dá)式 PI()*r^2 返回結(jié)果就是 3.14。
?
可能有小伙伴會(huì)說(shuō),直接輸入公式:
=PI()*B3^2
豈不更簡(jiǎn)單?何必多此一舉,繞這個(gè)彎兒呢。
?
別著急!
?
我們?cè)囍堰@個(gè)公式放到名稱管理器中:
?
首先在【名稱】中,給函數(shù)取一個(gè)名字,比如名為「S」,
?

?
然后在引用位置,輸入這個(gè)公式:
?
=LAMBDA(r,PI()*r^2)
再返回到工作表,輸入公式,下拉填充。
?
=S(B3)
效果如下圖:
?

?
瞧,一個(gè)簡(jiǎn)單的自定義函數(shù),就此誕生了!
?
哦~原來(lái)我們可以用 LAMBDA 函數(shù),把公式打包到名稱管理器,然后就可以在整個(gè)工作薄中隨時(shí)調(diào)用這個(gè)自定義函數(shù)。

前面我們介紹了 LAMBDA 函數(shù)的基本用法,為了展示它的強(qiáng)大,再來(lái)舉個(gè)實(shí)例:
?
比如怎么把下面框紅的、多行多列的數(shù)據(jù),轉(zhuǎn)化成一列。

?
解決這個(gè)問(wèn)題,只需要一個(gè)函數(shù),框選區(qū)域就能搞定!
?
選中任意單元格,輸入如下公式:
=Array(A1:F3)
?

?
是不是很方便!
?
它又是怎么做到的呢?
?
首先點(diǎn)擊名稱管理器,新建定義一個(gè)名稱為「Array」。
?

?
然后在引用位置輸入公式:
=LAMBDA(x,EVALUATE("{"""&TEXTJOIN(""";""",,x)&"""}"))
點(diǎn)擊【確定】。
?
?? 公式解析:
?
? Lambda 定義一個(gè)變量為 x,表示需要轉(zhuǎn)化的區(qū)域;
?
? Textjoin 函數(shù)可以將區(qū)域的字符按指定的規(guī)則,連接成字符串,TEXTJOIN(""";""",,x)表示將需要轉(zhuǎn)化的區(qū)域,以分號(hào)連接起來(lái),生成一串字符,然后外面加上一對(duì)大括號(hào){};
?
? 用宏表函數(shù) Evaluate 將上面的文本結(jié)果轉(zhuǎn)化成一個(gè)一維的垂直數(shù)組,來(lái)作為 Lambda 的第 2 參數(shù)返回結(jié)果的表達(dá)式。
?
這些復(fù)雜的運(yùn)算就被 LAMBDA 函數(shù)打包在名稱管理器中,
?
而我們只需要輸入一個(gè)簡(jiǎn)單的自定義函數(shù) ARRAY,就可以了!

遞歸,就是函數(shù)在運(yùn)算的過(guò)程中,調(diào)用函數(shù)本身。
?
比如求 1+2+3+......+98+99+100 的和。
?
在名稱管理器中,新建定義一個(gè)名稱為「CUSUM」。
?

?
然后在引用位置輸入公式:
?
=LAMBDA(n,IF(n=1,1,n+CUSUM(n-1)))
?
瞧!函數(shù)「CUSUM」,在定義它的過(guò)程中調(diào)用了自己,這個(gè)就是遞歸。
?
返回工作表,在任一單元格輸入公式:
?
=CUSUM(100)
?結(jié)果就神奇地出現(xiàn)了!如下圖 B2 單元格。
?

?
自定義函數(shù)「CUSUM」不斷循環(huán)調(diào)用自己,直到碰到條件 n=1,才停止調(diào)用。從而達(dá)到了數(shù)值累加的目的:
?

?
除此之外,Office365 還推出了一些新函數(shù),專門和 LAMBDA 函數(shù)搭配使用。
?
比如?MAKEARRAY?函數(shù),就可以和 LAMBDA 函數(shù)做九九乘法表。
?
在任一單元格,比如 B2,輸入如下公式:
?
=MAKEARRAY(9,9,LAMBDA(x,y,IF(x>=y,y&"x"&x&"="&x*y,"")))
?
然后用條件格式將不為空的單元格加上邊框。

?
效果如下圖:
?

?
MAKEARRAY 是生成一個(gè) 9 行 9 列的序列,通過(guò) LAMBDA 設(shè)定的表達(dá)式來(lái)返回指定行和列大小的數(shù)組。
這樣,一份充滿愛(ài)的九九乘法口訣表,就可以當(dāng)作心愛(ài)的禮物,送給親愛(ài)的小神獸了

?
當(dāng)然,我所列舉的這些用法,還僅僅是 LAMBDA 函數(shù)應(yīng)用的冰山一角,它還有更多功能,等著大家一起發(fā)現(xiàn),一起探討!

?
?? 小結(jié)一下:
?
? LAMBDA 函數(shù)把復(fù)雜的運(yùn)算打包到了名稱管理器,然后我們只需要輸入自己定義的函數(shù),就可以在表中方便重復(fù)使用;
?
? LAMBDA 函數(shù)還可以遞歸,調(diào)用本身;
?
? 它還可以和一些新出的函數(shù),如 REDUCE、MAP、SCAN、BYROW、BYCOLUMN、MARKEARRAY 這些函數(shù)搭配使用,創(chuàng)造出更多神奇的應(yīng)用。
?
如果這篇文章對(duì)你有幫助,請(qǐng)幫忙「點(diǎn)贊」「在看」「轉(zhuǎn)發(fā)」。
?
這對(duì)我很重要,能給我更多動(dòng)力,持續(xù)分享優(yōu)質(zhì)的內(nèi)容。?
秋葉家夏季專享福利——《?Excel?3 天集訓(xùn)營(yíng)》。
專為職場(chǎng)表哥表妹準(zhǔn)備,全部基于職場(chǎng)真實(shí)案例設(shè)計(jì),超實(shí)用 Excel 技巧集合教學(xué)。
機(jī)會(huì)通常是留給有準(zhǔn)備的人,行動(dòng)起來(lái)!3 天助你搞定表格難題!
《秋葉 Excel 3 天集訓(xùn)營(yíng)》
早學(xué)習(xí),早受益!
原價(jià)99
現(xiàn)在只需一元
不再被加班支配,充實(shí)自我就現(xiàn)在!
報(bào)名即送【35 個(gè)常用函數(shù)說(shuō)明】
趕緊掃碼預(yù)約吧!
??????

*廣告