已命名函式可讓你建立自訂函式,並在自訂函式中使用內建的試算表公式。我們已新增匯入已命名函式的功能,方便你在多份工作表中使用已命名函式。
如需這部影片的英語口述影像版本,請前往:Named functions tutorial (已命名函式教學課程)
如要取得試算表範本,並按照影片的指示操作,請點選下方的「建立副本」。
開啟已命名函式
- 在新的或現有的試算表中,依序按一下「資料」
「已命名函式」。
如果是內含公式的儲存格:
- 在內含公式的儲存格上按一下滑鼠右鍵。
- 依序按一下「查看更多儲存格動作」
「定義已命名函式」。
建立已命名函式
建立已命名函式時,請使用文字做為輸入資料的預留位置。
舉例來說,IF 函式最多可包含 3 個引數:
IF(logical_expression, value_if_true, value_if_false)
如果在儲存格中插入文字「logical_expression」、「value_if_true」或「value_if_false」做為引數,就會收到錯誤訊息。這些引數是系統預期使用者要在函式中輸入的資料類型的預留位置和說明。編寫已命名函式時,如要讓函式採用多個輸入資料,則必須定義引數預留位置。
過去你只能使用 Apps Script 建立自訂函式,因此需要編寫 JavaScript。現在有了已命名函式,你就可以透過直覺式介面建立自訂函式,完全不必編寫任何程式碼。
- 函式名稱
- 要在儲存格中插入函式時所用的函式名稱,必須是大寫英文字母。
- 相關規定:
- 不得與 Google 試算表內建函式的名稱相同 (例如
SUM)。 - 不得命名為
TRUE或FALSE。 - 不得使用「A1」或「R1C1」語法。
- 舉例來說,如果你將函式命名為「A1」或「AA11」,就會收到錯誤訊息。
- 不得以數字開頭。
- 名稱長度必須少於 255 個字元。
- 不得包含空格。
- 不得包含特殊字元,底線除外。
- 不得與 Google 試算表內建函式的名稱相同 (例如
- 函式說明
- 函式說明會顯示在函式說明方塊的「關於」區段中。
- 引數預留位置 [選用]
- 系統預期使用者要在函式中輸入的資料類型的預留位置說明。舉例來說,若預期使用者要輸入某一儲存格或儲存格範圍,則可分別使用「
CELL」或「RANGE」做為引數名稱。 - 相關規定:
- 不得與已命名函式中的另一個引數預留位置的名稱相同。
- 不得使用「A1」或「R1C1」語法。
- 舉例來說,如果你將預留位置命名為「A1」或「AA11」,就會收到錯誤訊息。
- 不得包含空格。
- 不得包含特殊字元,底線除外。
- 系統預期使用者要在函式中輸入的資料類型的預留位置說明。舉例來說,若預期使用者要輸入某一儲存格或儲存格範圍,則可分別使用「
- 公式定義
- 已寫好的公式,可插入儲存格中。若函式內含已定義好的引數,當你在儲存格中插入該函式時,系統會預期使用者輸入每個引數的內容。
- 相關規定:
- 必須是可剖析的公式。
- 括號缺一不可,必須成對。
- 逗號不得錯置。
其他詳細資訊
設定好主要元件後,你可以在第二頁新增更多詳細資訊。你還可以針對所定義的每個引數預留位置設定下列欄位:
- 引數說明
- 這個引數的預期輸入資料的簡短說明,例如「要搜尋的單一值」。
- 引數範例
- 這個引數的輸入範例。例如,若引數應該是某一儲存格範圍,則可使用「B3:B14」這樣的範例。
在儲存格中加入已命名函式時,函式說明方塊中就會顯示主要元件說明和這些額外詳細資訊:
匯入已命名函式
隨著你建立更多已命名函式或開始尋找其他使用者建立的實用函式後,可能會想要在不同工作表中使用這些函式。若要重複使用建立好的已命名函式,你可以將這些函式從其他工作表匯入目前的工作表中:
- 在電腦上開啟 Google 試算表。
- 開啟要匯入已命名函式的工作表。
- 依序按一下頂端的「資料」
「已命名函式」
「匯入函式」。
- 選取你要匯入函式的來源工作表。
- 選取你要匯入的已命名函式。
- 如要匯入該檔案中的所有已命名函式,請按一下「全部匯入」。
- 按一下「匯入」。
提示:
- 如果你選擇匯入的已命名函式與目前使用的檔案中原本就有的已命名函式名稱相同:匯入的函式會覆寫現有的已命名函式。
- 如果你選擇匯入的已命名函式依附於其他已命名函式 (例如公式定義):Google 試算表會警告你存在這項依附關係,並醒目顯示相關的依附函式。
- 如果你選擇匯入的已命名函式會使用與外部來源互動的公式,例如
IMAGE:Google 試算表會警告你存在這項互動關係。
範例
含有 2 個引數預留位置的已命名函式
- 函式名稱:
CONTAINS - 說明:檢查指定值是否落在某範圍內。如果是,則傳回
TRUE;否則傳回FALSE。 - 引數預留位置:
search_query、search_range - 定義:
=NOT(ISERROR(MATCH(search_query,search_range,0))) - 更多詳細資料:
- 引數說明:
search_query- 要搜尋的值
- 引數範例:
search_query- B3
- 引數說明:
search_range- 要搜尋的值所在範圍
- 引數範例:
search_range- B3:B14
- 引數說明:
不含引數預留位置的已命名函式
- 函式名稱:
NAMED_FUNCTIONS_SLOGAN - 說明:輸出適當的句子來說明已命名函式。
- 定義:
="已命名函式有助於輕鬆使用及讀取公式。"
遞迴性已命名函式
- 函式名稱:
REVERSE_WORDS - 說明:反向排列字串中的單字順序
- 預留位置:
str - 定義:
=IF(ISERROR(FIND(" ", str)), str, REVERSE_WORDS(RIGHT(str, LEN(str)-FIND(" ", str)))&" "&LEFT(str, FIND(" ",str)-1)) - 更多詳細資料:
- 引數說明:
str- 要反向排列單字順序的字串
- 引數範例:
str- "reversed need you String"
- 引數說明:
使用 LAMBDA 的已命名函式
- 函式名稱:
COUNT_FORMULAS - 說明:計算指定範圍中的公式數目。
- 預留位置:
range - 定義:
=COUNTIF(MAP(range,LAMBDA(cell, ISFORMULA(cell))),"TRUE") - 更多詳細資料:
- 引數說明:
range- 要搜尋的公式所在範圍
- 引數範例:
search_range- A2:D7
- 引數說明:
常見問題
我可以在已命名函式中建立相對範圍嗎?不可以,公式定義中的所有範圍都必須是絕對值。如果不是絕對值,系統會將其轉換為絕對範圍。舉例來說,系統會將「A1:B3」修改成「1!$A$1:$B$3」再儲存至試算表。不過,你可以將相對範圍做為引數傳遞給已命名函式。
可以,引數預留位置的名稱可以與內建函式的名稱相同。舉例來說,可以將引數預留位置命名為「SUM」。但一起使用時,引數預留位置的優先順位高於內建函式。
可以,不含參數的已定義名稱可以匯入 Google 試算表,但呼叫時不應加上括號。
可以,Google 試算表會更新已定義名稱,使其依循 Google 試算表已命名函式的語法。你必須為所有儲存格參照加上括號。
不可以。在 Google 試算表中建立已命名函式時,不可以使用與自訂 Apps Script 函式相同的名稱。不過,在試算表中新增自訂函式時,你可以使用與現有的已命名函式相同的名稱。但現有已命名函式的優先順位高於該自訂函式。
有 2 種情況會發生這個問題:
- 公式計算時間太長。
- 計算時耗用太多記憶體。
如要解決這個問題,請使用較簡單的公式來降低計算複雜度。
已命名範圍的優先順位高於已命名函式。