愛伊米

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

今天和大家分享的是,

Office365

新增的一個函式:

LAMBDA

函式。

這個函式可不簡單!

用 LAMBDA 函式,不僅可以編寫屬於自己的自定義函式,還能在函式中呼叫自身,也就是大家常說的

遞迴

下面就來看看它是怎麼做的。

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

比如在 Excel 中,選中任一單元格,輸入公式:

=LAMBDA(x,y,x+y)(1,2)

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

得到的結果是 3。

這個公式是什麼意思呢?

在 LAMBDA 函式中,x,y 是我們自己定義的兩個變數,如下圖;

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

x+y 是計算的表示式;

公式中最後的(1,2)兩個數值分別賦值給 x,y;

即 x=1,y=2,然後把它們代入表示式 x+y 中,結果就是 3。

由此我們引出

LAMBDA 函式的語法

=LAMBDA(變數 1,變數 2,。。。,計算表示式)

如果還不明白,不要緊!

咱再舉個例子:

打小我們就知道,圓的面積公式是:S=πr^2

根據圓的半徑求面積,用 LAMBD 函式在 Excel 中寫公式就是這個樣子的:

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

在 C3 單元格輸入公式:

=LAMBDA(r,PI()*r^2)(B3)

LAMBDA 函式定義了一個變數 r 表示半徑;

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

PI()*r^2 是求面積的表示式,PI()在 Excel 中就是圓周率π,

後面 B3 單元格的值 1,賦值給變數 r=1,然後代入表示式 PI()*r^2 返回結果就是 3。14。

可能有小夥伴會說,直接輸入公式:

=PI()*B3^2

豈不更簡單?何必多此一舉,繞這個彎兒呢。

彆著急!

我們試著把這個公式放到

名稱管理器

中:

首先在【名稱】中,給函式取一個名字,比如名為「S」,

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

然後在引用位置,輸入這個公式:

=LAMBDA(r,PI()*r^2)

再返回到工作表,輸入公式,下拉填充。

=S(B3)

效果如下圖:

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

瞧,一個簡單的自定義函式,就此誕生了!

哦~原來我們可以用 LAMBDA 函式,

把公式打包到名稱管理器,然後就可以在整個工作薄中隨時呼叫這個自定義函式

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

前面我們介紹了 LAMBDA 函式的基本用法,為了展示它的強大,再來舉個例項:

比如怎麼把下面框紅的、多行多列的資料,轉化成一列。

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

解決這個問題,只需要一個函式,框選區域就能搞定!

選中任意單元格,輸入如下公式:

=Array(A1:F3)

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

是不是很方便!

它又是怎麼做到的呢?

首先點選名稱管理器,新建定義一個名稱為「Array」。

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

然後在引用位置輸入公式:

=LAMBDA(x,EVALUATE(“{”“”&TEXTJOIN(“”“;”“”,,x)&“”“}”))▲ 左右滑動檢視

點選【確定】。

公式解析

Lambda 定義一個變數為 x,表示需要轉化的區域;

Textjoin 函式可以將區域的字元按指定的規則,連線成字串,TEXTJOIN(“”“;”“”,,x)表示將需要轉化的區域,以分號連線起來,生成一串字元,然後外面加上一對大括號{};

用宏表函式 Evaluate 將上面的文字結果轉化成一個一維的垂直陣列,來作為 Lambda 的第 2 引數返回結果的表示式。

這些複雜的運算就被 LAMBDA 函式打包在名稱管理器中,

而我們只需要輸入一個簡單的自定義函式 ARRAY,就可以了!

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

遞迴,就是函式在運算的過程中,呼叫函式本身。

比如求 1+2+3+……+98+99+100 的和。

在名稱管理器中,新建定義一個名稱為「CUSUM」。

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

然後在引用位置輸入公式:

=LAMBDA(n,IF(n=1,1,n+CUSUM(n-1)))

瞧!函式「CUSUM」,在定義它的過程中呼叫了自己,這個就是

遞迴

返回工作表,在任一單元格輸入公式:

=CUSUM(100)

結果就神奇地出現了!如下圖 B2 單元格。

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

自定義函式「CUSUM」不斷迴圈呼叫自己,直到碰到條件 n=1,才停止呼叫。從而達到了數值累加的目的:

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

除此之外,Office365 還推出了一些新函式,專門和 LAMBDA 函式搭配使用。

比如

MAKEARRAY

函式,就可以和 LAMBDA 函式做九九乘法表。

在任一單元格,比如 B2,輸入如下公式:

=MAKEARRAY(9,9,LAMBDA(x,y,IF(x>=y,y&“x”&x&“=”&x*y,“”)))▲ 左右滑動檢視

然後用條件格式將不為空的單元格加上邊框。

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

效果如下圖:

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

MAKEARRAY 是生成一個 9 行 9 列的序列,透過 LAMBDA 設定的表示式來返回指定行和列大小的陣列。

這樣,

一份充滿愛的九九乘法口訣表,

就可以當作心愛的禮物,送給親愛的小神獸了

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

當然,我所列舉的這些用法,還僅僅是 LAMBDA 函式應用的冰山一角,它還有更多功能,等著大家一起發現,一起探討!

Excel出了一個新函式,居然讓我能編寫屬於自己的函數了!

小結一下:

LAMBDA 函式把複雜的運算打包到了名稱管理器,然後我們只需要輸入自己定義的函式,就可以在表中方便重複使用;

LAMBDA 函式還可以遞迴,呼叫本身;

它還可以和一些新出的函式,如 REDUCE、MAP、SCAN、BYROW、BYCOLUMN、MARKEARRAY 這些函式搭配使用,創造出更多神奇的應用。