LAMBDA 函式(一):基本原理

更新於 發佈於 閱讀時間約 8 分鐘

Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!

在這個更新前,要設計自己的函式得仰賴 Apps Script,但寫程式的門檻不低,把自製函式匯入到其他試算表也需要一點心力,實在沒那麼親民;但現在只要將 LAMBDA 和已命名函式功能搭配在一起,我們就可以輕易實現那些目標。

實務上我們會拿 LAMBDA 搭配它的輔助函式,就可以用特定方式來進一步處理範圍的資料,運算能力就會更加強大。

這次的分享只會專注在 LAMBDA 的寫法本身,也會再提已命名函式作為應用。其他的輔助函式會在日後一一介紹,LAMBDA 的力量也會慢慢解開封印的!如果這是你第一次聽說已命名函式,你可以到這邊複習一下再回來看看喔:已命名函式,超方便!




語法解釋

LAMBDA 函式可以讓我們設計自己的函式,在當前的試算表內可以重複運用。

為了要設計這樣的函式,我們要給 LAMBDA 參數,然後在後面用那些參數寫算式。

語法看起來像這樣:

=LAMBDA(參數1, 參數2, ..., 算式)

寫參數的時候有一些限制跟建議:

  • 不可以是儲存格參照或範圍,像是 A1A2 這類的
  • 不可以寫空格或特殊字元
  • 開頭也不可以寫數字
  • 通常不會寫內建函式名稱,像是 SUMAVERAGEQUERY 這類的

雖然說參數寫中文也沒關係,但我通常寫簡單的英文字母:

  • 數字寫 val(value 的簡寫)
  • 文字寫 t(text 的簡寫)
  • 列寫 r(row 的簡寫)
  • 欄寫 c(column 的簡寫)
  • abcxyza1val1t1 這類的也可,製作函式時看得懂就好。

而後面的算式,就會用到前面定義的參數,這邊就可以開始設計函式了。

我們等等會寫這樣的東西:

把 x 的值乘以 2 的函式​
=LAMBDA(x, x * 2)

把 val1 跟 val2 加起來的函式​
=LAMBDA(val1, val2, val1 + val2)

把 t1 跟 t2 串起來的函式​
=LAMBDA(t1, t2, t1 & t2)

在前面定義的參數都要在後面的算式用到,不然等等會回傳 #N/A 錯誤喔!

另外,如果要單獨使用 LAMBDA 函式的話,我們要再放一組括號,裡面填入實際的參數,一開始定義了多少,這邊就放多少。像是這樣:

=LAMBDA(x, x * 2)(10)
--> 10 * 2
--> 20

=LAMBDA(x, y, x * 2 + y * 3)(10, 5)
--> 10 * 2 + 5 * 3
--> 35

我會在測試 LAMBDA 是不是我想要的結果時,會放這樣一組括號,但是跟等等要介紹的輔助函式配合的時候,就不可以放了,要注意一下。




輔助函式

LAMBDA 雖然是可以單獨使用,但我們大多會把它跟 LAMBDA 的輔助函式搭配使用,讓 LAMBDA 發揮更大的效力。簡單介紹一下輔助函式有哪些:

  • MAKEARRAY:套用 LAMBDA 函式運算,建立指定欄列大小的範圍。
  • MAP:對範圍內的每個值套用 LAMBDA 函式,產生出對應的新值。
  • BYCOL:以欄為單位,套用 LAMBDA 函式運算,回傳一列。
  • BYROW:以列為單位,套用 LAMBDA 函式運算,回傳一欄。
  • REDUCE:對範圍內的值以 LAMBDA 函式運算,累計成單一個值。
  • SCAN:逐列逐欄套用 LAMBDA 函式運算,回傳運算過程中的所有中間值。

舉例來說,你可以用 MAP 函式把 A1A10 中的每個值傳給 LAMBDA,把結果輸出為新的一欄:

=MAP(A1:A10, LAMBDA(x, x * 5))
raw-image

要注意到,如果輔助函式有多個參數要寫,參數的順序就會有關係。我的理解是:

raw-image

① 對應到甲、② 對應到乙,如果有更多參數就也是這樣類推。

舉個官方文件的例子:

=MAP(A1:B3, D1:E3, G1:H3, LAMBDA(valA, valB, valC, MAX(valA, valB, valC)))

前面是輔助函式的 MAP,包著 LAMBDA。這邊的對應關係是這樣的:

  • 前面的 A1:B3 對應到後面的 valA
  • 前面的 D1:E3 對應到後面的 valB
  • 前面的 G1:H3 對應到後面的 valC

所以綜合起來,我們可以在這下個小結論:

LAMBDA 是用來定義我們想重複使用的算式,然後輔助函式則是決定這個算式要怎麼被運用在範圍上的方法。

如果現在還是不太確定該怎麼操作的話也沒關係,之後會再逐一說明每個輔助函式的用法,會舉一些實際的例子給大家參考。




應用範例

在這邊我會示範「單純用 LAMBDA 函式」的方法,還有LAMBDA 函式放入已命名函式功能的過程。

第一步:先設計函式

我想做一個輸入數值後,幫我把它乘以 5 的函式,像是:

  • 放 2 進去,回傳 10。(2 * 5 = 10)
  • 放 5 進去,回傳 25。(5 * 5 = 25)
  • 放 10 進去,回傳 100。(10 * 5 = 25)

我們可以寫:

=LAMBDA(x, x * 5)
  • 參數:x
  • 算式:x * 5,x 乘以 5 的意思
raw-image

這樣就設計好了。

但在這步如果直接按下 Enter 的話,會出現 #N/A 錯誤:

raw-image

這是因為雖然函式設計好了,需要實際的值來讓 LAMBDA 運用。我們在這邊加上一組括號,用實際的數值來算算看吧:

=LAMBDA(x, x * 5)(2)
raw-image

這樣 LAMBDA 函式的設定就告一個段落了。


第二步:再加入「已命名函式」

接下來把剛剛設計好的函式,打包成叫做 QUNITUPLE(五倍的意思)的已命名函式。這樣一來就可以在試算表歡樂使用了!

點開畫面上方的「資料」>「已命名函式」:

raw-image

右手邊會出現一個窗格:

raw-image

點下方的「新增函式」,開始進入已命名函式的編輯畫面。

raw-image

這邊就可以著手,把剛剛做好的 LAMBDA 放進去已命名函式編輯窗格裡。

這是我的設定:

raw-image

這麼一來就可以在試算表內自由使用這個函式了:

raw-image




使用 LAMBDA 的時機

看到這邊,不知道你有沒有想過:

  • 「這樣不會有點多餘嗎?如果算式很簡單、只需要計算這個東西一次,我何必要用 LAMBDA?直接用儲存格參照加減乘除就可以了吧?」
  • 「我也可以不用 LAMBDA 做已命名函式,那為什麼還要學 LAMBDA?」

所以我想列了一些適合用 LAMBDA 的場合:

  • 想對範圍裡的值做複雜運算的時候
  • 想把自己設計的算式,打包成已命名函式的時候
  • 想重複使用相同的算式的時候

不適合用 LAMBDA 函式的場合:

  • 只想做簡單運算的時候:像上面乘以 5 的例子,這類加減乘除、簡單取總和、平均、最大值、最小值、算儲存格數量這些的,就沒必要用 LAMBDA 讓函式看起來更複雜。
  • 想讓試算表效能提升的時候:大多數的內建函式的效能通常比 LAMBDA 函式好。你的試算表本身已經有點「重」、效能不好的話,優先用內建函式解決問題會比較好一些;還有,如果你想讓 LAMBDA 結合 Apps Script、或是結合需要大量資源運算的函式(比如說大範圍的 IMPORTRANGEQUERYFILTER 等),我也不那麼推薦,理由同上,因為效能恐怕會不太好。




最後謝謝讀者的敲碗 🙏✨✨:

raw-image

之後會開始解釋 LAMBDA 的輔助函式,也會介紹一些實際的案例!




如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



留言
avatar-img
留言分享你的想法!
喜特先生 Mr. Sheet -avatar-img
發文者
2024/05/04
LAMBDA 系列文索引提及了這篇文章,趕快過去看看吧!
R-avatar-img
2024/04/08
喜特先生深入淺出的教學真的很棒,會讓人豁然開朗,仔細拜讀喜特先生的說明後,我突然開始有點看得懂官方文件的說明了,很期待LAMBDA輔助函式的後續介紹跟實際應用。
喜特先生 Mr. Sheet -avatar-img
發文者
2024/04/08
R 太好了!有幫上忙就好✨如果有任何問題都歡迎提問~
avatar-img
喜特先生官方沙龍
17.7K會員
152內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
喜特先生發佈了一系列介紹 LAMBDA 的文章,我把它們都統整在這了!你可以從頭開始學習,也可以找你有興趣的函式開始學習唷。 LAMBDA 函式(一):基本原理 介紹了 Google 試算表在 2022 年推出的 LAMBDA 函式和其輔助函式,以及如何在試算表中使用它們。LAMBDA
Thumbnail
喜特先生發佈了一系列介紹 LAMBDA 的文章,我把它們都統整在這了!你可以從頭開始學習,也可以找你有興趣的函式開始學習唷。 LAMBDA 函式(一):基本原理 介紹了 Google 試算表在 2022 年推出的 LAMBDA 函式和其輔助函式,以及如何在試算表中使用它們。LAMBDA
Thumbnail
再來介紹最後一個 LAMBDA 輔助函式,REDUCE!「reduce」這詞在中文的意思是「縮減」。在 Google 試算表上,REDUCE 會把範圍中的每個值套用指定的 LAMBDA 函式,把這函式的結果累計到一個累計值裡,最後回傳這個值,像是把一個範圍「縮~」成一個值。
Thumbnail
再來介紹最後一個 LAMBDA 輔助函式,REDUCE!「reduce」這詞在中文的意思是「縮減」。在 Google 試算表上,REDUCE 會把範圍中的每個值套用指定的 LAMBDA 函式,把這函式的結果累計到一個累計值裡,最後回傳這個值,像是把一個範圍「縮~」成一個值。
Thumbnail
接下來介紹 LAMBDA 函式的第四個輔助函式,SCAN! 「scan」在這邊可以翻成「掃描」,而 SCAN 的作用在於對範圍中的每個值進行「掃描」、累計運算,會回傳一個範圍,裡面的數字是每個計算步驟的中繼值;而它最常見的用法就是算「移動總計」(running total)。
Thumbnail
接下來介紹 LAMBDA 函式的第四個輔助函式,SCAN! 「scan」在這邊可以翻成「掃描」,而 SCAN 的作用在於對範圍中的每個值進行「掃描」、累計運算,會回傳一個範圍,裡面的數字是每個計算步驟的中繼值;而它最常見的用法就是算「移動總計」(running total)。
Thumbnail
這邊統整了關於 IMPORTRANGE 的一系列文章!IMPORTRANGE 是 Google 試算表裡面相當好用方便的函式,跟內建功能和函式結合,可以讓你更彈性地處理資料。
Thumbnail
這邊統整了關於 IMPORTRANGE 的一系列文章!IMPORTRANGE 是 Google 試算表裡面相當好用方便的函式,跟內建功能和函式結合,可以讓你更彈性地處理資料。
Thumbnail
接著想要一口氣介紹兩個類似的 LAMBDA 輔助函式:BYROW 跟 BYCOL。
Thumbnail
接著想要一口氣介紹兩個類似的 LAMBDA 輔助函式:BYROW 跟 BYCOL。
Thumbnail
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
Thumbnail
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
Thumbnail
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
Thumbnail
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
Thumbnail
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
Thumbnail
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
Thumbnail
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
Thumbnail
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News