Excel 宣布支持 λ 表達式,人人都是程序員

2020-12-11

微軟宣布 Excel 公式開始支持自定義函數。這將是 Excel 中使用公式的革命。Excel 公式是世界上最廣泛應用的編程語言,沒有之一。然而,作為編程語言,Excel 公式缺失了一些編程語言的天生特性。為了彌補,現在 Excel 推出了用公式定義公式并實現可重用的機制。

該機制基于來自廣泛用于函數式編程領域的 λ 表達式理論。

按照微軟的這段話來說,有兩個重點:

首先,微軟承認 Excel 公式就是編程的一種。

從此,使用 Excel 公式的人,也可以說自己是程序員了,所以,寫不出來不要哭,要好好學習哦。

其次,為了補充 Excel 公式的能力,設計團隊使用了 λ 表達式來擴充 Excel 公式的能力。

參考:

啥是 λ 表達式,表示完全聽不懂,徹底蒙蔽了。下面來一段科普。

啥是 λ 表達式

λ 表達式(讀作:拉姆達表達式),來自 λ 演算,λ(Lambda(大寫Λ,小寫λ)讀音:lan b(m) da(蘭畝達)['l?;md?])演算是一套用于研究函數定義、函數應用和遞歸的形式系統。它由數學家阿隆佐·邱奇在20世紀30年代首次發表。聽著好牛的樣子,有沒有?

λ 演算是圖靈完備的,也就是說,這是一個可以用于模擬任何圖靈機的通用模型。

在可計算性理論里,如果一系列操作數據的規則(如指令集、編程語言、細胞自動機)可以用來模擬單帶圖靈機,那么它是圖靈完備的。這個詞源于引入圖靈機概念的數學家艾倫·圖靈。

圖靈機(英語:Turing machine),又稱確定型圖靈機,是英國數學家艾倫·圖靈于1936年提出的一種抽象計算模型,其更抽象的意義為一種數學邏輯機,可以看作等價于任何有限邏輯數學過程的終極強大邏輯機器。

雖然圖靈機會受到儲存能力的物理限制,圖靈完全性通常指“具有無限存儲能力的通用物理機器或編程語言”。

聽著這些詞匯很囂張有沒有:任何有限邏輯數學過程的終極強大邏輯機器。注意:羅叔完全復制某度的專業解釋,不敢亂加個人理解。

那么,λ 演算是圖靈完備的,也就是說,這是一個可以用于模擬任何圖靈機的通用模型。

λ 演算在數學、哲學、語言學和計算機科學中都有許多應用。它在程序語言理論中占有重要地位,函數式編程實現了 λ 演算支持。λ 演算在范疇論中也是一個研究熱點。也就是說,這么強大的不講武德的年輕人,被搞進了 Excel 里,而且以后我們都可以用到了。

大家不要再爭了,我們都是程序員了。

沒有錯,有著良好初高中數學基礎的伙伴,都可以在 Excel 里用公式編程了。

LAMBDA - λ 表達式在 Excel 里可以干啥壞事

Excel 有著已有的豐富函數系統,但是有一個遺憾:人們不能定義自己的函數

有人會反對,那一定是 VBA 小哥哥了,VBA 小哥哥的確可以用 VBA 定義一個自定義的 Excel 函數,但著需要 Excel 的叔叔 VBA,現在 Excel 要讓自己的孫子的兒子來做這件事,不要 VBA 叔叔管了。

也就是說,Excel 開始允許用戶用單純的 Excel 函數來定義任意自己想要的函數。

簡答的說,這在 Excel 里可以做兩件壞事:

定義可以重用的自定義函數

實現遞歸

實現自定義函數

舉一個例子:

如果希望從 Station ID 列得到不含有數字部分的單詞作為 Location,在 Location 列編寫 Excel 函數如下:

=LEFT(RIGHT(B18,LEN(B18)-FIND("-",B18)),FIND("-",RIGHT(B18,LEN(B18)-FIND("-",B18)))-1)

能寫出這個函數的,高考數學分數不會太低,這有兩個問題:

于是,這個叫 LAMBDA 的函數來了。他可以治愈所有問題。打開:

定義一個函數叫:GETLOCATION,內容如下:

=LAMBDA(stationID, LEFT(RIGHT(stationID,LEN(stationID)-FIND("-",stationID)),FIND("-",RIGHT(stationID,LEN(stationID)-FIND("-",stationID)))-1))

然后就可以這么用了:

圖片

可以使用自己定義的函數了,太神奇了。

實現遞歸

舉一個例子:

現在我們想從 String 列去掉 Remove 列的內容而得到需要的東西,如上。

打開命名窗口:

定義這個函數叫:REMOVECHARS,內容如下:

=LAMBDA(textString, illegalChars,     IF(illegalChars="", textstring,       REMOVECHARS(        SUBSTITUTE(textString, LEFT(illegalChars, 1), ""),        RIGHT(illegalChars, LEN(illegalChars)-1))))

這個函數在定義的時候,居然可以自己調用自己。這就是遞歸

然后就可以實現:

圖片

名稱管理器在哪里

這個大家都用過,只要定義名稱就可以了。如下:

定義完成后:接著就可以正常使用了。

為啥我的 Excel 沒有這個函數

這是 Excel 的最新功能,位于測試頻道,需要您的產品加入 Office 預覽計劃,大家不要著急,Excel 也是每個月都更新的,相信在普通版里很快就可以見到了。

在這里可以加入體驗計劃:https://insider.office.com/zh-cn/join/windows

此功能一出,Excel 界震動了,曾經的表哥表姐,由于有了 λ 表達式,都可以高高興興的成為程序員啦。

(來源:PowerBI戰友聯盟)


上一篇:無
香港白小姐澳门正版足球报