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
14.5K會員
148內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
有招 LET,可以讓你的長算式更清晰好讀!
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
接續著上次提到的 COUNT、COUNTA,我們再稍稍延伸一點,把 COUNT 函式的家族補完,介紹最後的兩名成員:COUNTUNIQUE 跟 COUNTBLANK。
今天想聊一組比較冷門的函式,ARABIC 跟 ROMAN 函式,它可以把羅馬數字轉跟阿拉伯數字互換,語法相當單純好學!
這是「按條件算OO」系列文的第五篇教學!今天會來聊聊 MINIFS。
有招 LET,可以讓你的長算式更清晰好讀!
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
接續著上次提到的 COUNT、COUNTA,我們再稍稍延伸一點,把 COUNT 函式的家族補完,介紹最後的兩名成員:COUNTUNIQUE 跟 COUNTBLANK。
今天想聊一組比較冷門的函式,ARABIC 跟 ROMAN 函式,它可以把羅馬數字轉跟阿拉伯數字互換,語法相當單純好學!
這是「按條件算OO」系列文的第五篇教學!今天會來聊聊 MINIFS。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 AI說書 - 從0開始 - 118 安裝完 googletrans,現在示範如何從英文翻譯成法文: import googletrans translator
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Google 翻譯 (https://translate.google.com/) 提供了一個隨時可用的官方翻譯介面,Google 在其翻譯演算法中也擁有 Transf
Thumbnail
Google Docs 自動化應用情境,自動依 Google Sheets 試算表、Google Forms 表單回覆、Gmail 信件、Webhook、RSS 訂閱內容,建立相應 Google Docs 文件。還可以在新建 Google Docs 文件後,自動發送 Slack 通知給團隊成員!
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
※ 函式進階介紹: 箭頭函式: 箭頭函式相比於一般函式,語法相當簡潔。除了少去 function 關鍵字,如果只有一個參數,箭頭函式可以省略括號;只有一行程式碼,就是直接簡單返回一個變數或簡單的表達式,可以省略大括號和 return。例子如下: //一般函式計算平方用的寫法 const squ
Thumbnail
讓「Gamma」幫你做簡報,還可以幫你整理簡報大綱,簡報排版美化!靈感激盪跟簡報製作就靠它了!
Thumbnail
今天紀錄的是因應工作需要而學習的小技能。 我想達到的目標:當欄位裡面出現「寄出」這個關鍵字的時候整欄變色,以辨別該項目的狀態。
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
Thumbnail
對於許多企業而言,試算表是日常業務和決策過程中不可或缺的工具。它們被用於各種目的,從財務預算和盈虧分析到庫存管理和客戶數據記錄。然而,隨著業務的發展和數據量的增加,許多人會發現自己面臨著試算表管理和維護的挑戰,這些挑戰可能妨礙效率、準確性和生產力。 1. 數據管理的繁瑣性 試算表中數據的輸入
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 AI說書 - 從0開始 - 118 安裝完 googletrans,現在示範如何從英文翻譯成法文: import googletrans translator
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Google 翻譯 (https://translate.google.com/) 提供了一個隨時可用的官方翻譯介面,Google 在其翻譯演算法中也擁有 Transf
Thumbnail
Google Docs 自動化應用情境,自動依 Google Sheets 試算表、Google Forms 表單回覆、Gmail 信件、Webhook、RSS 訂閱內容,建立相應 Google Docs 文件。還可以在新建 Google Docs 文件後,自動發送 Slack 通知給團隊成員!
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
※ 函式進階介紹: 箭頭函式: 箭頭函式相比於一般函式,語法相當簡潔。除了少去 function 關鍵字,如果只有一個參數,箭頭函式可以省略括號;只有一行程式碼,就是直接簡單返回一個變數或簡單的表達式,可以省略大括號和 return。例子如下: //一般函式計算平方用的寫法 const squ
Thumbnail
讓「Gamma」幫你做簡報,還可以幫你整理簡報大綱,簡報排版美化!靈感激盪跟簡報製作就靠它了!
Thumbnail
今天紀錄的是因應工作需要而學習的小技能。 我想達到的目標:當欄位裡面出現「寄出」這個關鍵字的時候整欄變色,以辨別該項目的狀態。
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
Thumbnail
對於許多企業而言,試算表是日常業務和決策過程中不可或缺的工具。它們被用於各種目的,從財務預算和盈虧分析到庫存管理和客戶數據記錄。然而,隨著業務的發展和數據量的增加,許多人會發現自己面臨著試算表管理和維護的挑戰,這些挑戰可能妨礙效率、準確性和生產力。 1. 數據管理的繁瑣性 試算表中數據的輸入