你可以使用一組名稱和一個會使用這些名稱的 formula_expression
來建立及傳回自訂函式。如要計算 formula_expression
,你可以透過 name
宣告的任意數量的值來呼叫傳回的函式。
用法示範
LAMBDA(Salary, Salary*0.3)(1000)
LAMBDA(Temp, (5/9)*(Temp-32))(85)
語法
LAMBDA(name, formula_expression)
name
:要用於formula_expression
中的名稱。這個名稱必須是一個識別 ID 並且會解析為實際值,然後傳遞給LAMBDA
傳回的自訂函式。formula_expression
:要計算的公式,系統在計算這個公式時會使用前面參數所宣告的名稱。
附註
- 如果系統預期使用者要輸入另一個函式做為已命名函式內的引數,此時可以使用
LAMBDA
或已命名函式。
範例
範例資料:
單獨使用 LAMBDA
你可以編寫 LAMBDA
函式來計算薪資所得稅,假設稅率為 30%。你要在函式後面輸入薪資值。
範例:=LAMBDA(salary, salary*0.3)(C5)
這會計算第 1 個月的稅金。
在 LAMBDA 輔助函式中使用 LAMBDA
如要執行進階的陣列運算,請在 LAMBDA 輔助函式
(LHF) 中使用 LAMBDA
函式。
範例:=MAP(C5:C10, LAMBDA(salary, salary*0.3))
這會針對 C5:C10 陣列中的每個項目執行 salary * 0.3 (薪資 * 0.3) 的計算。
在已命名函式中使用 LAMBDA
你可以在已命名函式中使用 LAMBDA
函式做為其中引數。請參閱這篇文章,進一步瞭解已命名函式。
已命名函式:AVG_MONTHLY_TAX(range, tax_calculator_function)
公式定義:=tax_calculator_function(sum(range))/count(range)
你可以使用 LAMBDA
函式編寫 tax_calculator_function
引數。
範例:=AVG_MONTHLY_TAX(C5:C10,LAMBDA(range, range*0.3))
這會計算 1 到 6 月的每月平均稅金。
常見錯誤
名稱引數不是一個識別 ID
範例:=LAMBDA(3, x+1)(3)
如果第一個引數不是識別 ID,就會收到以下錯誤訊息:
識別 ID 相關規定:
- 不能是範圍,例如「A1」或「A2」。
- 不得包含空格或特殊字元,但可使用點號和底線。
- 不得以數字開頭,例如「9hello」。
未呼叫 LAMBDA
發生這個錯誤的原因是沒有在 LAMBDA
後面加上內含值的呼叫。
範例:=LAMBDA(salary, salary*0.3)
如果沒有傳遞任何值給 salary
,就會收到以下錯誤訊息:
如果 LAMBDA
是做為已命名函式中的引數,若沒有在已命名函式的定義中以所需值來呼叫代表該 LAMBDA
的預留位置,就表示未呼叫 LAMBDA。
範例:在公式定義中,如果你輸入 =tax_calculator_function/count(range)
而非 =tax_calculator_function(sum(range))/count(range)
,就會收到以下錯誤訊息:
提示:如果是在 LAMBDA 輔助函式
中使用 LAMBDA
,則不會發生這個錯誤,因為 LAMBDA 輔助函式
會自動參照指定的輸入範圍來使用 LAMBDA
。
Lambda 輔助函式
Lambda 輔助函式
(LHF) 是一種原生函式,除了可接受輸入陣列外,還接受可重複使用的 LAMBDA
做為引數。Lambda 輔助函式可針對輸入陣列中的每個值執行 LAMBDA
中指定的公式,協助執行進階陣列運算。傳遞可重複使用的 LAMBDA
時可採用 LAMBDA
函式或已命名函式
的形式。
Lambda 輔助函式:
- MAP 函式:這個函式會將指定陣列中的各個值對應為新值。
- REDUCE 函式:這個函式會將陣列縮減為累計結果。
- BYCOL 函式:這個函式會依照資料欄將陣列分組。
- BYROW 函式:這個函式會依照資料列將陣列分組。
- SCAN 函式:這個函式會掃描陣列並產生中繼值。
- MAKEARRAY 函式:這個函式會建立指定維度的計算陣列。
相關函式
建立及使用已命名函式:可讓使用者建立及儲存自訂函式,類似於LAMBDA
。